2014-10-16 35 views
1
<!DOCTYPE html> 
<html> 
<head> 
<script> 
function whichButton() { 
    document.getElementById("demo").innerHTML = event.keyCode; 
} 
</script> 
</head> 

<body onkeyup="whichButton()"> 

<p><b>Note:</b> Make sure the right frame has focus when trying this example!</p> 

<p>Click on this page, and press a key on your keyboard.</p> 

<p id="demo"></p> 

</body> 
</html> 

以上是我修改的w3schools.com的代码。插入“事件”与否有什么区别?

原代码有参数“事件”是这样的:whichButton(事件)

我不知道那是什么参数“事件”,为什么人们插入“事件”参数的功能。

我从上面的代码删除了'event'参数,但它仍然正常工作。

我认为代码没有错。必须有我不知道的东西...

+3

在某些浏览器中,'event'引用全局变量(window对象的一个​​属性)。在其他情况下,事件对象作为参数传递给事件处理程序,而不是全局变量。在Firefox中试用你的代码。 – Pointy 2014-10-16 16:26:25

回答

0

“事件”是一个兼性事件回调参数,它可以用来获取很多信息,例如哪个键被触发。

查看Event了解更多信息。

0

隐式event在所有浏览器中都是无效的,不应使用。我的猜测是event为了兼容性原因被添加到某些浏览器。

下面的测试告诉我们,如果他们是同一个对象的引用:

document.body.addEventListener("keyup", function (e) { alert(e === event); }); 

的Internet Explorer 11:true

谷歌Chrome浏览器39:true

是Mozilla Firefox 33:ReferenceError: event is not defined

+0

在所有浏览器上都一样吗? – Danny 2014-10-16 17:06:05

+0

我以为是,但不是。在Chrome和IE中它们是平等的。然而,在Firefox中,我得到'ReferenceError:event is not defined'。 – 2014-10-16 17:17:10

+0

我更新了我的答案。 – 2014-10-16 17:32:44