开发者问题收集

ReferenceError:事件未定义 - Firefox

2017-04-23
5974

我在使用 Firefox(版本 32.0)运行此代码时遇到问题

<!DOCTYPE html> 
<html>
  <head>
    <title>Test A</title>

    <script>
      function showCoords(evt){
        alert(
          "clientX value: " + evt.clientX + "\n" +
          "clientY value: " + evt.clientY + "\n"
        );
	}

	function begin(){
	parag = document.getElementById("parag");
	parag.addEventListener("click", function () {showCoords(event); }, false);
      }
    </script>
  </head>
  <body onload = "begin()">
    <p id="parag">To display the mouse coordinates click in this paragraph.</p>
  </body>
</html>

它在 Chrome 和其他浏览器中运行正常,但当我使用 Firefox 32.0 运行时,它会出现此错误:

ReferenceError: event is not defined

相反,此代码在 Firefox 中运行正常,没有错误:

<!DOCTYPE html> 
<html>
  <head>
    <title>TestB</title>

    <script>
      function showCoords(evt){
        alert(
          "clientX value: " + evt.clientX + "\n" +
          "clientY value: " + evt.clientY + "\n"
        );
      }
    </script>
  </head>
  <body>
    <p onclick="showCoords(event)">To display the mouse coordinates click in this paragraph.</p>
  </body>
</html>

有人能告诉我为什么前一个代码不起作用而后一个代码起作用吗? 同样,两者在 Chrome 中都有效,但第一个在 Mozilla Firefox(32.0)中存在错误。 提前谢谢您。

注意:不要告诉我更新浏览器(我必须使用它)或使用 jquery 或类似的东西。

3个回答

不确定它是否在 Firefox 中有效,因为我不想使用 Firefox。

<!DOCTYPE html> 
<html>
  <head>
    <title>Test A</title>
    <script>
      function showCoords(evt){
        alert(
          "clientX value: " + evt.clientX + "\n" +
          "clientY value: " + evt.clientY// + "\n"
        );
    	}
      function begin(){
        parag = document.getElementById("parag");
        parag.addEventListener("click", function(e) {showCoords(e);}, false);
      }
    </script>
  </head>
  <body onload="begin()">
    <p id="parag">To display the mouse coordinates click in this paragraph.</p>
  </body>
</html>
attempt0
2017-04-23

Firefox 没有提供全局 window.event ,即使是最新版本(53.0),但 Chrome 有。

Tonni
2017-04-23

尝试将事件发送到 begin 函数,例如 begin(event),然后将其发送到 js 端的 showCoords 函数

此外,在 js 中接受事件时,您可以尝试此操作, event = e || windows.event,这样您就可以确保所有浏览器都得到覆盖

Edin
2017-04-23