假设我们有一个带有一个脚本的简单 html 页面:
<html>
<script type="text/javascript">
window.onpopstate=function(event)
{ alert("hi"); }
</script>
<body >
<h1> Hi, 2 </h1>
<a href="h3.htm">next</a>
</body>
</html>
它不起作用(我在 Chrome 和 FF 下尝试过)。但是当我将脚本代码编写为
<script type="text/javascript">
function pp(event) { alert("hi"); }
window.onpopstate=pp()
</script>
有用!对我来说,这两段代码只是在函数定义上有所不同,但在实践中是不一样的。
顺便说一句,即使 onpopstate 事件触发,事件也是未定义的。对我来说,这是另一件不清楚的事情。谢谢你的帮助。
最佳答案
正如@Sampson 所说……它们不一样……
在第二个示例中, window.onpopstate
被填充了 pp
执行的 结果 。在这种情况下,此函数返回 undefined 因此 window.onpopstate
在此之后未定义。当然,您会看到 alert
,但 window.onpopstate
是 undefined
。
在第一个示例中,window.onpopstate
填充了函数本身,这是实际预期的。如果你看到 the docs , onpopstate
需要一个 funcRef
,这正是你作为参数传递的。
底线:在第二个示例中,您会看到 alert
,因为您正在调用该函数,但第一个是正确的。为了实际看到 onpopstate
被触发,您应该添加到浏览器历史记录中,但这是另一回事...
关于javascript - 2个事件处理程序分配之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34212432/