jQuery中的unload()事件为什么不起作用

时间:2022-12-05 19:58:01
代码如下:
<!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()事件?请高人指点

11 个解决方案

#1



window.onbeforeunload = function(){
 return '';
}

#2


<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>

<script>    $(function () {
        $(window).unload(function () { alert('unload') });
    });
</script>


没问题。。~

#3


引用 2 楼 showbo 的回复:
XML/HTML code?123456<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script>    $(function () {        $(window).unload(function () { alert('unload') });    });</script……

但是在浏览器里确实不起作用,您可以试一试

#4


IE7,8,firefox4都可以,chrome不行,自定义的alert语句不会执行

#5


你为什么要把它写在ready里面?
$(document).ready(function(){
  。。。。。。
});
这个标示的是当DOM(文档对象模型)已经加载,并且页面(包括图像)已经完全呈现时,会触发 ready 事件。

#6


引用 5 楼 real_tecent 的回复:
你为什么要把它写在ready里面?
$(document).ready(function(){
  。。。。。。
});
这个标示的是当DOM(文档对象模型)已经加载,并且页面(包括图像)已经完全呈现时,会触发 ready 事件。

你好,我试了一下,不写在ready()里也不行
<script type="text/javascript">
$(window).unload(function(){
alert('adsf');
});
</script>

#7


引用 4 楼 showbo 的回复:
IE7,8,firefox4都可以,chrome不行,自定义的alert语句不会执行

哦,我看了我的版本,我的是IE9,火狐是19.0.2(最新版)

#8


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

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

在IE10中,刷新可以看到弹出alert。

如果你想在用户离开页面之前确认是否离开,最好使用beforeunload事件

#9


引用 8 楼 shn11160 的回复:
unload事件在火狐和Chrome中对alert是阻止弹出的,所以你的代码看不到效果。
详见:http://*.com/questions/6063522/jquery-beforeunload

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

在IE10中,刷新可以看到弹出alert。

如……

在IE中刷新确实可以弹出alert。
我把代码改成before():
<script type="text/javascript">
$(document).ready(function(){
$(window).beforeunload(function(){
alert('asdf');
});
});
</script>
但是在火狐、谷歌、IE还是看不到效果。
我怎样写才能达到这样的效果:关闭、点击链接、输入地址都窗口弹出alert

#10


引用 9 楼 wozaixiaoximen 的回复:
引用 8 楼 shn11160 的回复:unload事件在火狐和Chrome中对alert是阻止弹出的,所以你的代码看不到效果。
详见:http://*.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设为你想显示的信息

#11


引用 10 楼 shn11160 的回复:
引用 9 楼 wozaixiaoximen 的回复:引用 8 楼 shn11160 的回复:unload事件在火狐和Chrome中对alert是阻止弹出的,所以你的代码看不到效果。
详见:http://*.com/questions/6063522/jquery-beforeunload

但unload事件可以进行一些对象销毁,事件解除绑定……

谢谢您了,解决了我的问题

#1



window.onbeforeunload = function(){
 return '';
}

#2


<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>

<script>    $(function () {
        $(window).unload(function () { alert('unload') });
    });
</script>


没问题。。~

#3


引用 2 楼 showbo 的回复:
XML/HTML code?123456<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script>    $(function () {        $(window).unload(function () { alert('unload') });    });</script……

但是在浏览器里确实不起作用,您可以试一试

#4


IE7,8,firefox4都可以,chrome不行,自定义的alert语句不会执行

#5


你为什么要把它写在ready里面?
$(document).ready(function(){
  。。。。。。
});
这个标示的是当DOM(文档对象模型)已经加载,并且页面(包括图像)已经完全呈现时,会触发 ready 事件。

#6


引用 5 楼 real_tecent 的回复:
你为什么要把它写在ready里面?
$(document).ready(function(){
  。。。。。。
});
这个标示的是当DOM(文档对象模型)已经加载,并且页面(包括图像)已经完全呈现时,会触发 ready 事件。

你好,我试了一下,不写在ready()里也不行
<script type="text/javascript">
$(window).unload(function(){
alert('adsf');
});
</script>

#7


引用 4 楼 showbo 的回复:
IE7,8,firefox4都可以,chrome不行,自定义的alert语句不会执行

哦,我看了我的版本,我的是IE9,火狐是19.0.2(最新版)

#8


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

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

在IE10中,刷新可以看到弹出alert。

如果你想在用户离开页面之前确认是否离开,最好使用beforeunload事件

#9


引用 8 楼 shn11160 的回复:
unload事件在火狐和Chrome中对alert是阻止弹出的,所以你的代码看不到效果。
详见:http://*.com/questions/6063522/jquery-beforeunload

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

在IE10中,刷新可以看到弹出alert。

如……

在IE中刷新确实可以弹出alert。
我把代码改成before():
<script type="text/javascript">
$(document).ready(function(){
$(window).beforeunload(function(){
alert('asdf');
});
});
</script>
但是在火狐、谷歌、IE还是看不到效果。
我怎样写才能达到这样的效果:关闭、点击链接、输入地址都窗口弹出alert

#10


引用 9 楼 wozaixiaoximen 的回复:
引用 8 楼 shn11160 的回复:unload事件在火狐和Chrome中对alert是阻止弹出的,所以你的代码看不到效果。
详见:http://*.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设为你想显示的信息

#11


引用 10 楼 shn11160 的回复:
引用 9 楼 wozaixiaoximen 的回复:引用 8 楼 shn11160 的回复:unload事件在火狐和Chrome中对alert是阻止弹出的,所以你的代码看不到效果。
详见:http://*.com/questions/6063522/jquery-beforeunload

但unload事件可以进行一些对象销毁,事件解除绑定……

谢谢您了,解决了我的问题