您的位置:首页 > 其它

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

2017-10-12 21:51 253 查看
书上讲主流浏览器的事件模型分为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注册事件,不需要判断事件模型,对其他旧版本浏览器,请自行尝试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息