1.事件流:描述的是从页面接收事件的顺序。
IE是事件冒泡流:事件开始时由最具体的元素接收,然后逐级向上传播到不具体的节点。
Safari,Chrome,Firefox,Opera会将事件一直冒泡到window对象。
Netscape是事件捕获流 :在事件到达预定目标之前捕获它。
Safari,Chrome,Firefox,Opera支持这种事件流模型,从window对象开始捕获事件。
DOM2级事件:首先发生事件捕获,为截获事件提供了机会。然后是实际的目标接收到事件。最后是事件冒泡阶段。
Safari,Chrome,Firefox,Opera会在捕获阶段触发事件对象,结果会有两个机会在目标对象上面操作事件
2.事件处理程序
HTML事件处理
<input type="button" value="click" onclick="alert('aaa')" />
缺点:1.在不能执行时触发事件,会出错 2.HTML与JS紧密耦合
DOM0级事件处理
btn.onclick = function(){
alert(this.id);
};//MyBtn
DOM0级方法指定的事件处理程序为元素方法。即程序中this指向当前btn元素。
DOM2级事件处理
addEventListener()
removeEventListener()
两者皆接收三个参数
要处理的事件名(不带on)
作为事件处理的函数
boolean:true 在捕获阶段调用事件处理;false 在冒泡阶段调用事件处理
移除事件时参数应与添加事件的参数一致,当使用匿名函数时无法移除事件。
var btn = document.getElementById("MyBtn");
btn.addEventListener("click", fun, false);
btn.removeEventListener("click", fun, flase);
//这样移除事件才有效,若是写成匿名函数则无法移除
IE事件处理
attachEvent()
detachEvent()
皆有两个参数
事件处理程序名称(带on)
事件处理函数
移除事件时参数应与添加事件的参数一致,当使用匿名函数时无法移除事件。
可以为一个元素添加多个事件,但是与DOM2时间相反,事件按着添加顺序的相反顺序触发。
事件处理程序在全局作用域中进行:this=window
3.事件对象
在触发DOM上的某个事件时,会产生事件对象event,包括导致事件的元素,事件的类型,以及其他与特定事件相关的信息。(如:鼠标事件导致的event会包含鼠标位置的信息)
DOM中的事件对象
在事件处理程序内部,对象this始终等于currentTarget(其事件处理程序当前正在处理的那个元素),而target则只包含事件的实际目标。
处理多个事件时可以使用type属性
阻止特定时间的默认行为,用preventDefault();
stopPropagation()立即停止事件在DOM层次的传播。
eventPhase属性可以用来确定事件当前处于事件流的哪个阶段。捕获=1;处于目标对象上=2;冒泡阶段=3
IE中的事件对象
访问IE中的event对象有几种不同的方式,取决于指定事件处理程序的方法。
DOM0级方法添加事件处理程序时,event作为window对象的的属性。
若用attachEvent()添加,则有一个event对象作为参数被传入到处理函数中。
var btn = document.getElementById("MyBtn");
btn.attachEvent("onclick", fucntion(event){
alert(event.type);
});
因为事件处理程序是根据指定方式来确定的,所以不能认为this会始终等于事件目标,最好用event.srcElement属性。
returnValue属性==preventDefault()方法,设置为false,就可以阻止默认行为。
cancelBubble属性==stopPropagation()方法,不过只能取消事件冒泡,因为IE不支持捕获事件。
分享到:
相关推荐
JavaScript事件学习小结(五)js中事件类型之鼠标事件 //www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 //www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员...
JavaScript事件学习小结(五)js中事件类型之鼠标事件 //www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 //www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员...
JavaScript事件学习小结(五)js中事件类型之鼠标事件 //www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 //www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员...
JavaScript键盘事件测试小结,相信可能会对您的工作有一定的帮助作用
JavaScript事件学习小结(五)js中事件类型之鼠标事件 //www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 //www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员...
将上传的图片添加防伪图片水印,并将图片直接写入数据库,不...js遇到的问题--转义字符。。FileUpload控件上传资源,需要在本地选择资源时为一个文本框赋值,js判断上传图片格式。。只能输入数字与英文,指定位数小数
JavaScript事件学习小结(五)js中事件类型之鼠标事件 //www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 //www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员...
js 事件小结 表格区别
JavaScript作用小结: 1 创建脚本块 2 隐藏脚本代码 3 浏览器不支持的时候显示
javascript中Date format(js日期格式化)方法小结.docx
概述: 事件对于控件来说至关重要,控件的消息通信机制使用事件的成本最低,但是对于JS控件来说有一些麻烦需要解决,JS类本身不支持事件,DOM模型支持的事件仅适应于浏览器的DOM节点。所以创建一套事件是我们写控件...
本文实例总结了JS获取文件大小方法。分享给大家供大家参考,具体如下: 方法一,利用ActiveX控件实现: [removed] function getFileSize(filePath) { var fso = new ActiveXObject("Scripting.FileSystemObject");...
在课堂上学到的JavaScript进行总结,希望可以帮助更多的人,多多分享自己,从而能互相学习,如果写的有错误的地方也希望大家能指正
js下关于onmouseout、事件冒泡的问题经验小结.docx
1.1、JavaScript是基于对象和事件驱动的(动态的) 它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的响应,是采用以事件驱动的方式进行的。所谓事件驱动,就是指在主页中执行了某种操作所产生...