ahs*_*ele 12 javascript events cross-browser
首先让我说,我理解下面的代码有一个重大问题.具体来说,event参数不会传递给函数.我不明白为什么在下面的代码中Chrome,Opera,Safari,Firefox和IE都会以event不同的方式处理变量.
$('#eventBtn').on('click', function() {
console.log(event);
event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
在Chrome,Opera和Safari中,上述代码可以正常运行.IE在第二行失败,Firefox立即失败.出于测试目的,我创建了一个稍微更加装饰的jsFiddle.以上console.log(event)各种浏览器的输出:
Chrome版本26.0.1410.64 m
MouseEvent {dataTransfer:null,toElement:button#superBtn,fromElement:null,y:20,x:33 ...}Opera版本12.15
MouseEventSafari Version 6.0.2(8536.26.17)
MouseEventIE版本10.0.9200.16540
[对象MSEventObj]Firefox版本20.0.1
ReferenceError:未定义事件
我有点喜欢Chrome,Opera和Safari的这个"功能",因为它的工作原理不像其他浏览器中的编码创建意外行为.虽然IE也有一个全局event变量,但与上述浏览器不同,它不会将该变量赋值给当前正在触发的事件.Firefox没有全局event变量,因此一旦event引用就会失败.
通常,我e用于表示事件变量,这些变量在所有浏览器中按预期失败的方式相同.为什么Chrome,Opera和Safari都有这样一个全局event变量?这种行为是否记录在某处?除了不使用event变量命名任何处理这个"功能"的建议?
IE总是提供一个全局event变量,与W3C标准所规定的不同.其他浏览器也在做同样的事情,以便向使用旧IE版本开发的网站提供向后兼容性.
虽然IE也有一个全局事件变量,但与前面提到的浏览器不同,它不会将该变量分配给当前正在触发的事件.
我相信它确实如此.
| 归档时间: |
|
| 查看次数: |
1332 次 |
| 最近记录: |