joh*_*hue 4 javascript events dom cross-browser dom-events
窗口级别的以下声明:
var event; // for IE
var event = "anything"; // for Chrome
将销毁此处使用的事件对象:
<div onMouseOver = "alert(event.type);">Mouseover Div</div>
两个声明似乎都没有逐步实现Firefox.
我意识到声明一个名为"event"的变量是错误的代码,但我对这里的技术差异感到好奇,例如,在IE中使用var会将变量重新初始化为null,而Chrome不会使用var声明覆盖,除非值是显式赋值的,并且FF可能会将事件对象完全保存在窗口的var声明范围之外.
这更像是一种好奇心.我在我控制之外的网站上遇到了一个由此造成的错误,我看到的越多,我看到浏览器之间的细微差别.只是想知道是否有人在这里有任何见解.
在IE中,event是window对象的属性,并在事件处理程序函数中用于访问正在处理的事件.在其他浏览器(如Firefox)中,情况是在事件处理程序属性中,属性中的JavaScript代码被调用,就好像它形成了一个函数体,其中已经传递了一个event与被处理事件相对应的参数.所以
<div onmouseover="alert(event.type);">Mouseover Div</div>
Run Code Online (Sandbox Code Playgroud)
鼠标悬停代码是有效的
function(event) {
alert(event.type);
}
Run Code Online (Sandbox Code Playgroud)
并且event参数覆盖event包含范围中声明的任何参数,而在IE中,它是
function() {
alert(event.type);
}
Run Code Online (Sandbox Code Playgroud)
并且event标识符被解析为全局对象的属性(即window).
IE中的"event"对象是"window"对象的属性; 也就是说,它是全球性的.在Firefox中,它是一个构造并传递给事件处理程序的值.
如果您使用jQuery或其他一些框架,通常事件处理支持会将"event"对象规范化为跨浏览器的相同功能.
| 归档时间: |
|
| 查看次数: |
2456 次 |
| 最近记录: |