日期:2014-05-16  浏览次数:20307 次

jQuery中的unload()事件为什么不起作用
本帖最后由 wozaixiaoximen 于 2013-03-13 12:58:39 编辑
代码如下:
<!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>无标题文档</title>
<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(window).unload(function(){
alert('adsf');
});
});

</script>
</head>
<body>
    <div>
        <p><a href="http://www.baidu.com">hello world</a></p>
    </div>
</body>
</html>
注:我的jquery-1.9.1.min.js路径是对的。
W3C中说:

定义和用法
当用户离开页面时,会发生 unload 事件。

具体来说,当发生以下情况时,会发出 unload 事件:

点击某个离开页面的链接 
在地址栏中键入了新的 URL 
使用前进或后退按钮 
关闭浏览器 
重新加载页面

 
可是我在火狐、IE、谷歌浏览器下看不到效果。我的unload()事件写的有错吗?怎样才能出现unload()事件?请高人指点

------解决方案--------------------
引用:
引用:unload事件在火狐和Chrome中对alert是阻止弹出的,所以你的代码看不到效果。
详见:http://stackoverflow.com/questions/6063522/jquery-beforeunload

但unload事件可以进行一些对象销毁,事件解除绑定等清理工作,这通常是难以看到的。

在IE10中……

在beforeunload事件里,不需要alert,该事件会自动产生一个弹出框,
就算你加了alert也是没效果的。
另外,要使beforeunload事件能自动弹出框,必须得有返回值,如:

$(window).beforeunload(function(event){
var message = “I’m really going to miss you if you go.”;
event.returnValue = message;
return message;
});

上面的代码可以达到关闭、点击链接、输入地址都窗口弹出框的效果。
把返回值message设为你想显示的信息