为什么“事件”在 Chrome 中全局可用,而在 Firefox 中则不然?

2024-06-19

在回答另一个问题时,出现了一个与event对象在匿名函数中可用,无需传入。在 Chrome 中,下面的代码工作正常,但 Firefox 会抛出错误。

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

Chrome:

FireFox:

ReferenceError:事件未定义


众所周知,

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

适用于两种浏览器。Here https://jsfiddle.net/73f2d3ut/9/是有问题的代码。这是 Chrome 或 Firefox 的错误,还是这两种浏览器的预期行为?哪个浏览器合适?


在 IE 中,事件对象是一个全局对象 http://docstore.mik.ua/orelly/webprog/jscript/ch19_03.htm#jscript4-CHP-19-SECT-3.2,(不会传递给处理函数)但作为全局对象进行访问。您还可以将其作为窗口对象的属性来访问,例如window.event

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

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

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

$(document).ready(function () {
    $("#uspsSideboxTrackingClose").click(function (event) {
        event.preventDefault();
        console.log(event);
    });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么“事件”在 Chrome 中全局可用,而在 Firefox 中则不然? 的相关文章

随机推荐