<a href="#" id="a">a</a>
<script>
document.attachEvent("onclick", function(){
event.a = 100;
window.m = event;
alert(event.a);
});
document.getElementById("a").attachEvent("onclick", function(){
alert(event === window.m);
})
</script>
在IE的预告片版本中,当我点击文档时,我得到了未定义的内容,然后当我点击#a
链接时,我得到了错误。
我的问题是; IE的全局中有多少个事件对象? 并且IE事件对象是一个可变对象吗?
答案 0 :(得分:2)
在旧版本的IE中,window.event
公开有关正在处理的当前事件的信息。 JavaScript是单线程的 - 总是并且可能永远都是(请参阅Workers以获取类似多线程行为的示例) - 因此,即使事件同时被触发(click
在{{{ 1}}按钮就是一个这样的例子),它们按顺序解析(先submit
,然后click
,因为那是点击该按钮的默认动作。)
因此,submit
将始终提供有关您所在处理程序的当前事件的信息。
据我所知,这不是一个“正常”的对象,你可以附加东西。这成为拖放事件的问题,您需要能够将数据附加到事件以使其与相关的未来事件一起使用。这就是我们为事件设置DataTransfer系统的原因。
因此,只有一个window.event
,但它更多地是事件数据的接口,而不是您可以使用的实际对象。从这个意义上说,它与我想的window.event
类似。