javascript事件在IE和DOM浏览器的差异总结

总结于《JavaScript高级程序设计》

 

IE4最早在其4.0版(1995年)中创建并实现了自己的事件模型,后来Opera和safari成功的支持了DOM标准的事件模型,最后ie成为唯一一个对DOM事件缺乏良好支持的主流浏览器

 

1、事件处理函数

在IE中:

 

每个元素和windows对象都有两个方法:attachEvent()和detachEvent(),看名字就知道第一个是添加事件处理函数,第二个是移除。

 

1[object].attachEvent("name_of_event_handler","function_to_attach")

2[object].detachEvent("name_of_event_handler","function_to_remove")

这种方法可以添加多个事件处理函数

 

在DOM浏览器中:

addEventListener()和removeEventListener()来分配和移除事件处理函数。他有三个参数:事件名称、要分配的函数、处理函数是用于冒泡阶段还是捕获阶段(捕获阶段为true)。

 

1[object].addEventListener("name_of_event",fnhander,bcapture)

2[object].removeEventListener("name_of_event",fnhander,bcapture)

同样也可以添加多个事件处理函数

 

2、事件对象的定位

在IE中:

事件对象是windows对象的一个属性event,事件处理函数必须这样访问事件对象:

 

1oDiv.onclick = function(){

2    var var oEvent = window.event;

3 

4}

在DOM中:

而在DOM标准中event对象必须作为唯一的参数传递给事件处理函数,所以要这么做:

 

1oDiv.onclick = function(){

2    var oEvent = argunments[0]

3}

或者

 

1oDiv.onclick = function(oEvent){

2 

3}

所以要用不同的方法来获取event对象

所以我们经常见到这种写法

 

1e =  event || window.event

逻辑或操作符作用于两个对象时第一个对象非空,返回第一个对象,否则返回第二个对象。

 

还有在arguments属性,在event对象中总是事件处理函数的第一个参数,也就是说可以访问事件处理函数的agreements[0]来获取event对象

 

3、获取目标

在IE中:

IE目标包含在event对象的srcElement属性中:

 

1var oTarget = oEvent.srcElement;

在DOM中:

目标包含在target属性中:

 

1var oTarget = oEvent.target;

IE目标只能是元素、文档或者窗口;DOM兼容的浏览器也允许把文本节点作为目标

 

4、获取字符代码

IE和DOM都支持event对象的keyCode属性,他会返回按下按键的数值代码

 

在IE中:

 

1var oCharCode = oEvent .keyCode;

在DOM中:

 

1var oCharCode = oEvent .charCode;

5、阻止默认行为

在IE中:

 

1oEvent.returnValue = false;

在DOM中:

 

1oEvent.preventDefault();

6、停止冒泡

在IE中:

 

1oEvent.cancelBubble = true;

在DOM中:

 

1oEvent.stopPropagation();

7、获取事件源

在IE中:

 

1oEvent.target

在DOM中:

 

1oEvent.srcElement  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值