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

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

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

铬:

在此处输入图像描述

火狐:

ReferenceError:未定义事件


众所周知

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

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

在IE中,事件对象是一个全局对象 (不传递给处理函数),但作为全局对象访问。 您还可以将其作为window.event等窗口对象的属性进行访问

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

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

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

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