Onunload与Onbeforeunload
Onunload,onbeforeunload都是在刷新或关闭时调用,能够在<script>脚本中经过window.onunload来指定或者在<body>里指定。区别在于onbeforeunload在onunload以前执行,它还能够阻止onunload的执行
(测试了下,发现onbeforeunload因为会阻止onunload的执行,则也会window.close()的执行,也说明了window.close()是在onunload以后执行的)。
Onbeforeunload也是在页面刷新或关闭时调用,Onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了须要加载的新的页面,在即将替换掉当前页面时调用。Onunload是没法阻止页面的更新和关闭的。而 Onbeforeunload 能够作到。曾经作一个考试系统,涉及到防止用户半途退出考试(有意或者无心),代码以下:
Onbeforeunload也是在页面刷新或关闭时调用,Onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了须要加载的新的页面,在即将替换掉当前页面时调用。Onunload是没法阻止页面的更新和关闭的。而 Onbeforeunload 能够作到。曾经作一个考试系统,涉及到防止用户半途退出考试(有意或者无心),代码以下:
Java代码
- <script type="text/javascript">
- <!--
- window.onbeforeunload = onbeforeunload_handler;
- window.onunload = onunload_handler;
- function onbeforeunload_handler(){
- var warning="确认退出?";
- return warning;
- }
- function onunload_handler(){
- var warning="谢谢光临";
- alert(warning);
- }
- // -->
- </script>
这段代码在FF和IE上都能正确执行.再点击关闭按钮时首先触发obbeforeunload事件,点击否认时不执行onload事件.
一般应用在 注销session等等登录信息 等方面....
这里一并推荐一个教程 ActionScript3 里面写道:
运用onunload事件判断浏览器是刷新仍是关闭窗口
function CloseOpen(event) {
if(event.clientX<=0 && event.clientY<0) {
alert("关闭");
}
else
{
alert("刷新或离开");
}
}
if(event.clientX<=0 && event.clientY<0) {
alert("关闭");
}
else
{
alert("刷新或离开");
}
}
Java代码
- window.onbeforeunload = function() //author: meizz
- {
- var n = window.event.screenX - window.screenLeft;
- var b = n > document.documentElement.scrollWidth-20;
- if(b && window.event.clientY < 0 || window.event.altKey)
- {
- alert("是关闭而非刷新");
- window.event.returnValue = ""; //这里能够放置你想作的操做代码
- }
- }
------------------------------------------------------------------------------------------javascript
另外一篇的转载:java
最近写东西的时候发现须要对浏览器的关闭进行监听,当用户关闭的时候须要调用session.invalid();清空session信息,可是仔细一查手册发现不管是body仍是window都没有onclose事件,以后onload,onunload,beforeunload三个事件浏览器
然而三个时间不管是哪一个都没法单独解决单独监听浏览器关闭的事件,由于在浏览器正常运行时先加载的是beforeunload->onunload->onload 可是麻烦的是若是刷新页面时是执行beforeunload->onunload,若是关闭浏览器的话是执行onunload(实际上关闭浏览器beforeunload也执行的).若是单单监听onunload的话是没法区别用户是刷新仍是关闭窗口的.因此就要用beforeunload来监测了服务器
window.onbeforeunload=onclose;session
function onclose()
{
if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)
{
removeSession();//这里添加具体的处理方案
}
}测试
通过测试,IE7浏览器能够监测监听到 alt+f4 或者单击右上角小叉子退出,可是对于多选项卡浏览的用户貌似没法监听到这点比较惋惜~ spa