我遇到了onunload
事件测试脚本的问题
它必须只在窗口onunload
上触发
但它也会因负载而发生..为什么?
有什么不对劲,我不知道它是什么..
请帮忙
这是html代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function hello(){alert("welcome to my page");}
</script>
<script type="application/javascript" src="script.js"></script>
</head>
<body onload="hello()" >
</body>
</html>
这是脚本代码
window.onunload = goodbye();
function goodbye(){
alert("Thank you for visiting.come back soon!");
}
//window.addEventListener('unload',goodbye(),false);
我尝试使用body标签进行内联调用,window.onunload
调用和监听器调用。
没有什么工作正常,我得到了“谢谢你的访问。很快就回来!”页面首次加载时的消息。
答案 0 :(得分:2)
问题在于以下几行:
window.onunload = goodbye();
这会将window.unload
事件设置为等于goodbye()
函数的结果,并立即调用goodbye()
函数。将其更改为:
window.onunload = goodbye;
更详细:
通过命名函数调用函数,并在括号中传递零个或多个参数(例如:goodbye()
)。当你调用一个函数时,会立即调用它,如果它被用作语句的一部分(而不是整个语句),则在调用的地方使用函数的返回值。所以,你对这句话说的是什么:
window.onunload = goodbye();
是:“获取调用goodbye
函数的结果,并将返回值赋给window.onunload
变量”。调用goodbye
函数会弹出警报,但返回null,因此您实际上是在说“立即弹出警报,然后将window.onunload
变量设置为null”。
window.onunload
变量(和所有其他事件变量)期望是一个函数,所以你在这里想要说的是,“将window.onunload
函数设置为goodbye
函数,所以当系统调用onunload
事件时,它会调用goodbye
函数“,为此,你将函数本身分配给变量:
window.onunload = goodbye;
<强>无论其强>
onunload
事件可能不是您正在寻找的事件。这仅在页面卸载后触发,因此大多数UI组件不再可用,包括alert
。尝试改为onbeforeunload
(JavaScript + onbeforeunload)