为什么Chrome可以在全球范围内使用'event而不能在Firefox中使用?

本教程将介绍为什么Chrome可以在全球范围内使用'event而不能在Firefox中使用?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

为什么Chrome可以在全球范围内使用'event而不能在Firefox中使用? 教程 第1张

问题描述

在计算另一个问题的答案时,出现了一个奇怪的错误,该错误与匿名函数中的event对象在没有传入的情况下可用有关。在Chrome中,以下操作运行正常,但Firefox抛出错误。

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

铬:

Firefox:

ReferenceError:未定义事件


已知

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

在两种浏览器中都适用。Here是有问题的代码。这是Chrome或Firefox的错误,还是这两种浏览器的故意行为?哪个浏览器是正确的?

推荐答案

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

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

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

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

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

好了关于为什么Chrome可以在全球范围内使用'event而不能在Firefox中使用?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。