浏览器报错obj.attachEvent is not a function

书上讲主流浏览器的事件模型分为IE事件模型和标准事件模型,那么如何区分,IE事件模型中window对象提供了event属性 保存当前事件;标准事件模型中,事件对象是在事件触发时生成,作为参数传递给事件处理程序,是局部的。具体代码区分为

if (window.event) {
obj.attachEvent('on'+name,handler);
}
else {
obj.addEventListener(name,handler,userCapture);
}

敲好代码后运行发现 谷歌报错obj.attachEvent is not a function,IE11报错对象不支持“attachEvent”属性或方法

跟书上不一样啊,修改后发现当前使用obj.addEventListener(name,handler,userCapture);注册事件是对的,至于是知识点过时还是其他问题,今天总结写到这里,且听下回分解。

参考《ajax从入门到精通》


经测试发现IE11/谷歌52使用window.event判断事件模型为IE事件模型,但不支持attachEvent,直接使用obj.addEventListener即可完成事件注册。FireFox54使用window.event判断事件模型为标准事件模型,使用obj.addEventListener完成事件注册。

综上所述,对以上三种浏览器可直接使用addEventListener注册事件,不需要判断事件模型,对其他旧版本浏览器,请自行尝试。



猜你喜欢

转载自blog.csdn.net/a1257427517/article/details/78220319