onunload,onbeforeunload都是在刷新或关闭时调用,能够在<script>脚本中经过 window.onunload来调用。区别在于onbeforeunload在onunload以前执行,它还可 以阻止onunload的执行。javascript
onbeforeunload 是正要去服务器读 取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了须要加载的新的页面,在即将替换掉当前页面时调用。html
onunload 事件在用户退出页面时发生。java
onunload 发生于当用户离开页面时发生的事件(经过点击一个链接,提交表单,关闭浏览器窗口等等。)浏览器
注意: onunload 事件一样触发了页面载入事件(+ onload 事件)。服务器
直接使用在html中:spa
<body onload="SomeJavaScriptCode">
注:如下 HTML 标签支持 onunload :
<body>
,<frameset>
firefox
JavaScript 中:code
window.onunload=function(){SomeJavaScriptCode};
例子:htm
//JS document window.onunload = function(){ alert("unload is work"); }
IE浏览器 页面跳转、刷新页面能执行,但关闭浏览器不能执行;对象
firefox 页面跳转能执行,但刷新页面、关闭浏览器不能执行;
Safari 刷新页面、页面跳转,关闭浏览器都会执行;
Opera、Chrome任何状况都不执行。
如图所示:
大致一句话描述:IE, Firefox, 和 Safari 支持 onunload 事件, 可是 Chrome 或者 Opera 不支持该事件。
onbeforeunload
事件在即将离开当前页面(刷新或关闭)时触发。
该事件可用于弹出对话框,提示用户是继续浏览页面仍是离开当前页面。
对话框默认的提示信息根据不一样的浏览器有所不一样,标准的信息相似 "肯定要离开此页吗?"。该信息不能删除。
但你能够自定义一些消息提示与标准信息一块儿显示在对话框。
注意: 若是你没有在 <body>
元素上指定 onbeforeunload
事件,则须要在 window
对象上添加事件,并使用 returnValue
属性建立自定义信息(查看如下语法实例)。
html中使用:
<element onbeforeunload="myScript">
JavaScript 中:
object.onbeforeunload=function(){myScript};
JavaScript 中, 使用 addEventListener() 方法:
object.addEventListener("beforeunload", myScript);
注意: Internet Explorer 8 及更早 IE 版本不支持
addEventListener()
方法。
JS中使用例子写法一:
//JS document window.onbeforeunload = function(){ return "onbeforeunload is work"; }
return
的值 为你须要告诉用户的提示信息如上面demo的话浏览器的提示是这样(firefox ,Chrome并不支持文字提醒)
。
JS中使用例子写法二:
window.onbeforeunload = function(event) { event.returnValue = "我在这写点东西..."; };
值得注意的是,网上流传说 能够经过检查 e.clientX e.clientY 判断 用户是否点击 右上角关闭浏览器的,可是实践发现 只有 IE6,IE7,IE8 能获取获得具体数值,其余浏览器均为 undefined。
IE、Safari 完美支持
Firefox、Chrome 不支持文字提醒信息
Opera 不支持
如图所示:
凡是 <a>
标签 都会触发 onbeforeunload事件 包括 href=”javascript:void(0)” 这种。
在IE6,IE7 下面 点击 里面的 a 标签,蛋疼的事情就发生了。
解决方法:给这 a标签的 父级 添加 onclick=function(){return false} 便可,不过添加了这个以后 要确保 父级里面没有 input type=”checkbox” 的标签,不然会致使其无效不可点击。