假设我们有一个带有一个脚本的简单 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.onpopstateundefined

在第一个示例中,window.onpopstate 填充了函数本身,这是实际预期的。如果你看到 the docsonpopstate 需要一个 funcRef ,这正是你作为参数传递的。

底线:在第二个示例中,您会看到 alert,因为您正在调用该函数,但第一个是正确的。为了实际看到 onpopstate 被触发,您应该添加到浏览器历史记录中,但这是另一回事...

关于javascript - 2个事件处理程序分配之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34212432/

10-12 02:31