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