js 事件处理程序 事件对象
事件:用户或浏览器自身执行的动作;
事件处理程序:响应某个事件的函数;
事件流:从页面中接收事件的顺序。
1、DOM事件流
"DOM2级事件"规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段。单击<div>元素会按照下图顺序触发事件。
实际的目标(<div>元素)在捕获阶段不会接收到事件,意味着在捕获阶段事件从document到<html>再到<body>后就停止了。在处于目标阶段,事件在<div>上发生,并在事件处理中被看成冒泡阶段的一部分。然后,冒泡阶段发生,事件又传播回文档。
2、事件处理程序
(1)HTML事件处理程序
某个元素支持的每种事件,都可以使用一个与相应事件处理程序同名的HTML特性来指定。这个特性的值应该是能够执行的JavaScript代码。
<input type="button" value="click me" onclick="alert(event.type)">//click
<input type="button" value="button1" onclick="alert(this.value)">//button1 <input type="button" value="click me" onclick="showMessage()">
<script>
function showMessage(){
alert('Hello world');
}
</script>
存在问题:存在时差问题;HTML与JavaScript代码紧密耦合。
(2)DOM0级事件处理程序
通过JavaScript制定事件处理程序的传统方式,是将一个函数赋值给一个事件处理程序属性。每个元素(包括window和document)都有自己的事件处理程序属性。这些属性通常全部小写。
var bt = document.getElementById('myButton');
bt.onclick = function(){
alert(this.id);//DOM0级方法指定的事件处理程序被认为是元素的方法,程序中的this引用当前元素
}
bt.onclick = null;//删除事件处理程序
(3)DOM2级事件处理程序
addEventListener()和removeEventListener()传入的参数相同,意味着addEventListener()添加的匿名函数将无法移除。
var bt1 = document.getElementById('myButton1');
bt1.addEventListener('click', function(){
alert(this.id);
}, false);//false表示在冒泡阶段调用事件处理程序,true表示在捕获阶段调用事件处理程序,大多数情况下是用false
var handler = function(){
alert('hello world');
};
bt1.addEventListener('click', handler, false);
bt1.removeEventListener('click', handler, false);//移除
IE9、Firefox、Chrome、Safari和Opera支持Dom2级事件处理程序。
(4)IE事件处理程序
由于IE8更早版本只支持事件冒泡,attachEvent()添加的事件处理程序会被添加到冒泡阶段。事件处理程序会在全局作用域中运行,这是与Dom0级事件处理程序的主要区别。
var bt1 = document.getElementById('myButton1');
bt1.attachEvent('onclick', function(){
alert(this == window);//true,事件处理程序会在全局作用域中运行
});
var handler1 = function(){
alert('world');
};
bt1.attachEvent('onclick', handler1);//ie
bt1.detachEvent('onclick', handler1);//移除
支持IE事件处理程序的浏览器有IE和Opera。
3、DOM中的事件(event)对象
var btn = document.getElementById('mybtn');
var handler = function(event){
switch(event.type){
case 'click':
alert('clicked');
event.stopPropagation();//立即停止事件在DOM层次中的传播
break;
case 'mouseover':
event.target.style.backgroundColor = 'red';
break;
case 'mouseout':
event.target.style.backgroundColor = '';
break;
}
} btn.onclick = handler;
btn.onmouseover = handler;
btn.onmouseout = handler; document.body.onclick = function(){
alert('body clicked');
}
js 事件处理程序 事件对象的更多相关文章
- IE attachEvent事件处理程序(事件绑定的函数)的this指向的是window不是执行当前事件的dom元素
IE attachEvent事件处理程序(事件绑定的函数)的this指向的是window不是执行当前事件的dom元素. attachEvent(type,listener); listener函数中的 ...
- DOM事件处理程序-事件对象-键盘事件
事件流: 事件流--描述的是从页面中接受事件的顺序 IE ---事件冒泡流:即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播至最不具体的那个节点(文档). Netsc ...
- js事件流、事件处理程序/事件侦听器
1.事件流 事件冒泡 IE的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档). 事件捕获 ...
- 对JavaScript事件处理程序/事件监听器的设定的简单介绍
下面是一些对事件处理进行设定的方式. 指定为HTML元素的属性(事件处理程序) 指定为DOM元素的属性(事件处理程序) 通过EventTarget.addEventListener()进行指定(事件监 ...
- JS——事件流与事件处理程序
1.事件流:从页面中接收事件的顺序 1.1 IE :事件冒泡流1.2 Netscape :事件捕获1.3 DOM事件流 :事件捕获阶段——事件目标阶段——事件冒泡阶段DOM2级事件规定 :捕获阶段不会 ...
- JS事件流与DOM事件处理程序
在Javascript的DOM中,关于事件Event对象的知识是一定要掌握的.Event对象模型主要分为两个部分,一个是Event对象本身具有的属性和方法,这个参照API就可以学得:另一个是在DOM节 ...
- javaScript事件(二)事件处理程序
一.事件 二.事件流 以上内容见:javaScript事件(一)事件流 三.事件处理程序 前面提到,事件是用户或浏览器自身执行的某种动作,如click,load和mouseover都是事件的名字.响应 ...
- 《JS高程》事件学习笔记
事件:文档或浏览器窗口中发生的一些特定的交互瞬间,也即用户或浏览器自身执行的某种动作. -------------------------------------------------------- ...
- Javascript高级编程学习笔记(58)—— 事件(2)事件处理程序
事件处理程序 事件处理程序即响应某个事件的函数 事件处理程序以 “on” 开头 如“onclick”,“onload” HTML事件处理程序 某个元素支持的每种事件都可以使用一个与响应的事件处理程序同 ...
随机推荐
- canvas画简单电路图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- entity framework 5 更新指定字段
dbSet.Attach(good); var stateEntry = ((IObjectContextAdapter)context).ObjectContext. ObjectStateMana ...
- MYSQL 函数 字符串到整数
SELECT CAST('002' AS signed) 结果为2 SELECT CAST('125e342.83' as signed) 结果为 125
- C#常用字符串加解密方法封装
C#中常用的字符串加密.解密方法封装,包含只加密但不解密的方法.收藏起来备用. //方法一 //须添加对System.Web的引用 //using System.Web.Security; /// & ...
- Asp.net中使用Server.HtmlDecode(string str)的使用
前言: 在使用Visual Studio开发web页面时,需要在GridView中绑定Table数据,并加入了CommandField, 试图,点击详情按钮是,获取GridView中Rows中Cell ...
- Win10 IoT C#开发 5 - 操作 IoT 设备内嵌 SQLite 数据库 CURD
Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 前几章我 ...
- 孙鑫MFC学习笔记5:文本显示
1.CreateSolidCaret添加一个插入符 参数:宽度,高度 如果设为0,就设为默认窗口边界的宽度和高度 2.GetSystemMetrics获取默认窗口边界的宽度和高度 3.Caret在创建 ...
- 查看Eclipse版本
点击Help->About Eclipse,在弹出的对话框下部有很多logo. 鼠标在logo上停留,会有提示,找出提示为Eclipse.org的那个logo,即为Eclipse的logo,点击 ...
- mysql对表操作的各种语句
创建表 create table tb_user( id int(类型)primary key(设置为主键) auto_increment (设置id自增长), 每一个字段用逗号隔开, name va ...
- 初识Web 服务(即Web Service)
一.什么是Web服务 简单来说就是在Internet上提供的这种服务,我们称这种服务为Web服务. 二.Web服务的主要目标? 是支持跨平台的可互操作性. 三.Web服务的优势 四.Web服务提供了一 ...