JS事件-事件处理程序之IE事件处理程序
2017-05-10 08:48
274 查看
与访问DOM中的event对象不同,要访问IE中的event对象有几种不同的方式,取决于指定事件处理程序的方法。在使用DOM0级方法添加事件处理程序时,event对象作为window对象一个属性存在。来看下面例子。
在此,我们通过window.event取得了event对象,并检测了被触发事件的类型(IE中的type属性与DOM中的type属性是相同的),可是,如果事件处理程序是使用attachEvent()添加的,那么就会有一个event对象作为参数被传入事件处理程序函数中,如下所示.
在像这样使用attachEvent()的情况下,也可以通过window对象来访问event对象,就像使用DOM0级方法时一样。不过为方便起见,同一个对象也会作为参数传递。
如果是通过HTML特性指定的事件处理程序,那么还可以通过一个名叫event的变量来访问event对象(与DOm中事件模型相同)。再看一个例子。
IE的event对象同样也包含与创建它的事件相关的属性和方法。其中很多属性和方法都有对应的或者相关的DOM属性和方法。与DOM的event对象一样,这些属性和方法也会因为事件类型的不同页不同,但所有事件对象都会包含包含下表所列的属性和方法。
因为事件处理程序的作用域是根据指定它的方式来确定的。所有不能认为this会始终等于事件目标.故而,最好还是使用event.srcElement比较保险.例如:
这个例子在onclick事件处理程序中使用returnValue达到的阻止链接默认行为的目的。与DOM不同的是,在此没有办法确定事件是否能被取消。
相应地,cancelBubble属性与DOM中的stopPropagation()方法的作用相同,都是用来停止事件冒泡的。由于IE不支持事件捕获,因岩浆只能取消事件冒泡;但stopPropagation()可以同时取消事件捕获和冒泡。例如:
通过在onclick事件处理程序中将cancelBubble设置为true,就可以阻止事件通过冒泡页触发document.body中注册的事件处理程序。结果,在单击按钮后,只会显示一个警告框。
var btn = document.getElementById('myBtn'); btn.onclick = function() { var event = window.event; alert(event.type); }
在此,我们通过window.event取得了event对象,并检测了被触发事件的类型(IE中的type属性与DOM中的type属性是相同的),可是,如果事件处理程序是使用attachEvent()添加的,那么就会有一个event对象作为参数被传入事件处理程序函数中,如下所示.
var btn = document.getElementById('myBtn'); btn.attachEvent('onclick', function(event){ alert(event.type); // click });
在像这样使用attachEvent()的情况下,也可以通过window对象来访问event对象,就像使用DOM0级方法时一样。不过为方便起见,同一个对象也会作为参数传递。
如果是通过HTML特性指定的事件处理程序,那么还可以通过一个名叫event的变量来访问event对象(与DOm中事件模型相同)。再看一个例子。
<input type="button" value="Click Me" onclick="alert(event.type)">
IE的event对象同样也包含与创建它的事件相关的属性和方法。其中很多属性和方法都有对应的或者相关的DOM属性和方法。与DOM的event对象一样,这些属性和方法也会因为事件类型的不同页不同,但所有事件对象都会包含包含下表所列的属性和方法。
属性/方法 | 类型 | 读/写 | 说明 |
---|---|---|---|
cancelBubble | Boolean | 读/写 | 默认值为false,但将其设置为true就可以取消事件冒泡(与DOM中的stopPropagation()方法的作用相同) |
returnValue | Boolean | 读/写 | 默认值为true,但将其设置为false就可以事件的默认行为(与DOM中的preventDefault()方法的作用相同) |
srcElement | Element | 只读 | 事件的目标(与DOm中的target属性相同) |
type | String | 只读 | 被触发的事件的类型 |
var link = document.getElementById('myLink'); link.onclick=function(){ window.event.returnValue = false; }
这个例子在onclick事件处理程序中使用returnValue达到的阻止链接默认行为的目的。与DOM不同的是,在此没有办法确定事件是否能被取消。
相应地,cancelBubble属性与DOM中的stopPropagation()方法的作用相同,都是用来停止事件冒泡的。由于IE不支持事件捕获,因岩浆只能取消事件冒泡;但stopPropagation()可以同时取消事件捕获和冒泡。例如:
var btn = document.getElementById('mybtn'); btn.onclick = function() { alert('Clicked'); window.event.cancelBubble = true; } document.body.onclick = function() { alert('Body clicked'); }
通过在onclick事件处理程序中将cancelBubble设置为true,就可以阻止事件通过冒泡页触发document.body中注册的事件处理程序。结果,在单击按钮后,只会显示一个警告框。
相关文章推荐
- js火狐以及ie处理鼠标进入与离开事件
- js使用函数绑定技术改变事件处理程序的作用域
- js跨浏览器事件处理程序
- js中事件重复绑定会相应导致多次处理程序的响应
- js事件---事件处理程序
- js使用函数绑定技术改变事件处理程序的作用域
- js添加事件处理程序
- FF,chrome与IE的事件处理程序
- 【js学习笔记-092】-----事件处理程序的调用
- js radio checkbox onchange事件在IE与FF的处理
- JS事件处理程序小结
- JS注册/移除事件处理程序(ExtJS应用程序设计实战)
- js 事件处理程序
- js跨浏览器事件对象、事件处理程序
- js处理ie关闭事件
- js 事件处理程序
- js中ie与标准dom的区别——事件处理
- js添加事件处理程序
- JS笔记【归纳】:DOM中的事件处理程序
- javascript中 IE事件处理程序中try catch用法