IE中有多少个window.event对象?

时间:2015-12-26 12:45:47

标签: javascript internet-explorer

<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事件对象是一个可变对象吗?

1 个答案:

答案 0 :(得分:2)

在旧版本的IE中,window.event公开有关正在处理的当前事件的信息。 JavaScript是单线程的 - 总是并且可能永远都是(请参阅Workers以获取类似多线程行为的示例) - 因此,即使事件同时被触发(click在{{{ 1}}按钮就是一个这样的例子),它们按顺序解析(先submit,然后click,因为那是点击该按钮的默认动作。)

因此,submit将始终提供有关您所在处理程序的当前事件的信息。

据我所知,这不是一个“正常”的对象,你可以附加东西。这成为拖放事件的问题,您需要能够将数据附加到事件以使其与相关的未来事件一起使用。这就是我们为事件设置DataTransfer系统的原因。

因此,只有一个window.event,但它更多地是事件数据的接口,而不是您可以使用的实际对象。从这个意义上说,它与我想的window.event类似。