浏览器报错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注册事件,不需要判断事件模型,对其他旧版本浏览器,请自行尝试。
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注册事件,不需要判断事件模型,对其他旧版本浏览器,请自行尝试。
相关文章推荐
- div+CSS 兼容小摘
- JAVASCRIPT IE 与 FF 中兼容写法记录
- CSS hack实现 CSS完美兼容IE6/IE7/FF的通用方法
- 兼容各个浏览器的技巧
- addEventListener()第三个参数useCapture (Boolean)详细解析
- js更优雅的兼容
- addEventListener()与removeEventListener()解析
- 解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
- IE和Firefox下javascript的兼容写法小结
- 浅谈js中startsWith 函数不能在任何浏览器兼容的问题
- IE与FireFox的JavaScript兼容问题解决办法
- JS在IE和FF下attachEvent,addEventListener学习笔记
- addEventListener 的用法示例介绍
- 基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
- bootstrap3 兼容IE8浏览器!
- JAVASCRIPT IE 与 FF中兼容问题小结
- jQuery浏览器CSS3特写兼容实例
- 两种方法基于jQuery实现IE浏览器兼容placeholder效果
- JavaScript 注册事件代码
- 解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法