在用户点击浏览器关闭按钮时需要给出提示,确认退出时就需要监听浏览器的关闭事件了,
?
Onunload与Onbeforeunload
Onunload,onbeforeunload都是在刷新或关闭时调用,可以
在<script>脚本中通过window.onunload来指定或者在<body>里指定。区别在于
onbeforeunload在onunload之前执行,它还可以阻止onunload的执行。
Onbeforeunload也是在页面刷新或关闭时调用,Onbeforeunload是正要去服务器读
取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。Onunload是无
法阻止页面的更新和关闭的。而 Onbeforeunload 可以做到。曾经做一个考试系统,涉及到防止用户半途退出考试(有意或者无意),代码如下:
<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>?
在用户确定关闭窗体后,页面中有一个表单需要提交,但是发现当表单提交时又会触发 window.onbeforeunload事件,也就是说当关闭窗口和提交表单时会弹出两次相同的提示信息,所以代码调整如下:
JavaScript代码:
<script type="text/javascript"> <!-- var MSG_UNLOAD="内容没有保存,是否确认关闭窗口!"; var UnloadConfirm = {}; UnloadConfirm.set = function(confirm_msg){ window.onbeforeunload = function(event){ event = event || window.event; event.returnValue = confirm_msg; } } UnloadConfirm.clear = function(){ window.onbeforeunload = function(){}; } function onunload_handler(){ UnloadConfirm.clear(); document.forms[0].submit(); } function closeWin(){ window.close(); } function initPage(){ UnloadConfirm.set(MSG_UNLOAD); } initPage(); window.onunload = onunload_handler; // --> </script>?