ReferenceError:未定义事件 - Firefox

时间:2017-04-23 10:34:59

标签: javascript html firefox mouseevent

我在使用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:未定义事件

相反,此代码在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 个答案:

答案 0 :(得分:1)

不确定它是否在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>

答案 1 :(得分:1)

Firefox没有可用的全局window.event,即使是最新版本(53.0),但Chrome也有。

答案 2 :(得分:0)

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

同样在接受活动的js中,你可以尝试这个, event = e || windows.event所以你可以确保所有的浏览器都被覆盖