为什么 'event' 在 Chrome 中全局可用,但在 Firefox 中不可用?

Why is 'event' available globally in Chrome but not Firefox?

在回答另一个问题时,出现了一个奇怪的错误,该错误与 event 对象在匿名函数中可用而不被传入有关。在 Chrome 下面工作正常,但是 Firefox 抛出错误。

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

Chrome:

FireFox:

ReferenceError: event is not defined


已经知道

$("#uspsSideboxTrackingClose").click(function(event) { .. }

适用于两种浏览器。 Here 是有问题的代码。这是 Chrome 或 Firefox 的错误,还是两种浏览器的预期行为?哪个浏览器合适?

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

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

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

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

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