onbeforeunload和onunload用法

   onunload是在页面刷新或关闭时调用,可以在<script>脚本中通过window.onunload来指定到用户自定义函数,也可以在body里面指定。
   onbeforeunload是则也是在页面刷新或关闭时调用,不过是在onunload之前执行。它可以阻止onunload的执行。

   onunload和onbeforeunload的区别在于,onbeforeunload是在onunload之前调用的,可以在onbeforeunload指定的函数里面进行一个确认操作,如果确认执行,则页面会执行onunload里面指定的函数,即刷新或关闭页面;如果取消操作,则不会执行onunload指定的函数,也不会进行刷新或关闭页面。这种情况适用于当用户要离开一个网页时使用。下面是一个例子:

<html>
 <head>
  <script type="text/javascript">
   function whenUnload()
   {
    alert("触发了onunload");
   }

   function whenBeforeUnload()
   {
    return "确认离开?";               // 这句话显示在确认对话框中
    //alert("触发了onbeforeunload");   // 也可以执行其它逻辑
   }

   //window.onunload       = whenUnload;
   //window.onbeforeunload = whenBeforeUnload;
  </script>
 </head>

 <body onbeforeunload="return '确认离开';">
  <div>如果body之间什么都没有,那可能不会触发这两个事件。</div>
 </body>
</html>

    微软官文网站说,如果正文标记为空,即body标签间没有任何内容,那么Internet Explorer6SP 1不会触发这两个事件,具体可以参考这个链接:http://support.microsoft.com/kb/331869/

  

 

    最近在开发中用了这两个事件,但是却不是很顺利。在执行onbeforeunload时,我做一个确认判断,如果点确认,就离开页面,如果点取消,就不执行任何操作。但事实上不管点哪一个,页面还是执行下一步操作。onbeforeunload执行的判断操作没起到作用。原因可能是我这个页面使用了第三方的javascript开发包的关系,冲突了还是怎的。最后,找到了另外一个解决方法。新建一个页面,这个页面定义onbeforeunload事件,再通过iframe包含原来那个页面。至于onunload哪个页面使用,那都无所谓了。不过注意要将新建的那个页面的边距什么的都去掉,这样,通过iframe包含进来后的效果就和原来的页面效果一模一样了,也成功地解决了onbeforeunload执行无效的问题。下面是新建的页面:

<html>
<head>
<script type="text/javascript">
 function whenUnLoad()
 {
   alert("离开");
 }
</script>
</head>
<body onbeforeunload="return '确定离开?'"   style=" width:100%;height:100%"
 leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<iframe src="MainBody.html" width="100%" height="100%" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" />
</body>
</html>



上一篇: 再回首——百度之死
下一篇: window的onunload和onbeforeunload事件的一些总结
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: javascript
相关日志:
评论: 0 | 引用: 0 | 查看次数: 7628
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑