为什么“事件”在Chrome中全局可用,而不是FF?

时间:2015-05-11 02:57:10

标签: javascript jquery javascript-events event-handling global

在处理另一个问题的答案时,出现了一个奇怪的错误,与addEventListener('beforeunload', function() { if (mycondition) return 'Do you really want to leave?'; }); 对象在匿名函数中可用而没有传入。在Chrome中,下面的工作正常,但FF会抛出错误。

event

铬:

enter image description here

火狐:

  

ReferenceError:未定义事件

众所周知

$(document).ready(function() {
  $("#uspsSideboxTrackingClose").click(function() {
    event.preventDefault();
    console.log(event);
  });
});

适用于两种浏览器。 Here是违规代码。这是Chrome或FF的错误,还是两种浏览器的预期行为?哪种浏览器是对的?

1 个答案:

答案 0 :(得分:14)

在IE中,事件对象was a global object(未传递给处理函数),但作为全局对象访问。您还可以将其作为窗口对象的属性(如window.event

)进行访问

在FF和其他浏览器中,事件对象作为参数传递,因为在FF中没有名为event的全局属性,您将收到错误消息。

在chrome中,他们已经添加了对这两个功能的支持,因此您将把事件对象作为全局引用和参数。

但是由于您使用的是jQuery,jQuery会对这两种行为进行规范化处理,并始终将事件对象作为参数传递给事件处理程序。

$(document).ready(function () {
    $("#uspsSideboxTrackingClose").click(function (event) {
        event.preventDefault();
        console.log(event);
    });
});