onunload事件出错

时间:2013-01-28 09:00:16

标签: javascript

我遇到了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调用和监听器调用。 没有什么工作正常,我得到了“谢谢你的访问。很快就回来!”页面首次加载时的消息。

1 个答案:

答案 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。尝试改为onbeforeunloadJavaScript + onbeforeunload