Javascript 事件不是';t仅在FireFox中定义-在Chrome和Safari中定义

Javascript 事件不是';t仅在FireFox中定义-在Chrome和Safari中定义,javascript,firefox,Javascript,Firefox,我在FireFox的函数中遇到了一个问题,它说event未定义。然而,该代码在Chrome和Safari中运行得非常好。修复前的相关代码如下所示: function searchOpen(event) { event.preventDefault(); searchOverlay.classList.add("show"); searchOverlayInput.focus(); } function searchClose() { if (event.target.class

我在FireFox的函数中遇到了一个问题,它说
event
未定义。然而,该代码在Chrome和Safari中运行得非常好。修复前的相关代码如下所示:

function searchOpen(event) {
  event.preventDefault();
  searchOverlay.classList.add("show");
  searchOverlayInput.focus();
}

function searchClose() {
  if (event.target.classList.contains("search-overlay__search-bar", "search-suggestion-item", "search-suggestion-item__link")) {
    return false;
  } else {
      searchOverlay.classList.remove("show");
  }
}

for (var i = 0; i < navSearch.length; i++) {
  navSearch[i].addEventListener("click", searchOpen);
}

searchCloseButton.addEventListener("click", searchClose);
这就解决了问题


但我不明白的是,
event
在该函数中从未被引用,我只将其传递到
searchOpen()
——但为什么只有在FireFox中它才会抛出引用错误?为什么旧代码在Chrome和Safari上起作用?

因为没有定义事件嗯…我的问题是如果没有定义事件,Chrome和Safari怎么会没有发现这个错误?而且在
searchClose()
函数中没有对事件的引用,只有
searchOpen()
-那么为什么
searchClose()
在函数中的任何地方都没有引用时返回未定义的事件呢?懒得去查找它,但是搜索
窗口。事件
一些浏览器支持它,其他浏览器不支持。你确定它从未被引用过吗?这个
if(event.target.classList.contains
函数中的
searchClose
看起来确实像是被引用的。你做过epascarello提到的研究吗?
window
是全局对象,一些浏览器上有
window.event
。因此对于有
事件的浏览器,event
被定义为“globaly”而且他们不会抛出错误。Firefox显然不是这些浏览器之一。
function searchClose(event) {
  if (event.target.classList.contains("search-overlay__search-bar", "search-suggestion-item", "search-suggestion-item__link")) {
    return false;
  } else {
      searchOverlay.classList.remove("show");
  }
}