js如何监听窗口的关闭?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js如何监听窗口的关闭?相关的知识,希望对你有一定的参考价值。
beforeunload 和 unload 对chrome没用。。。公司又要求兼容chrome,折腾了两天了,都快崩溃了。。。
下面的代码兼容除 Opera 之外的任何浏览器。Opera 到现在最高版本为止对 onunload 的支持都是不完整的,对于 unbeforeunload 更是根本不支持。
window.onbeforeunload = function(e)
e = e || window.event;
var msg = "您确定要离开此页面吗?";
// IE
e.cancelBubble = true;
e.returnValue = msg;
// Firefox
if(e.stopPropagation)
e.stopPropagation();
e.preventDefault();
// Chrome / Safari
return msg;
;
</script>追问
如果是onunload呢? 现在在做的东西 是考试界面,进入考试后,刷新,关闭都进行提交,我想的是onunload方法,但是 chrome上好像没效果。。。还是可以用别的方法代替的?求指教。。。
追答你是想不出现任何提示直接提交表单吧?
据我所知,无论是使用 onunload 和 onbeforeunload 都无法做到兼容全部浏览器。
windown.onbefloreunload = function()
document.forms["test"].submit();
;
这段代码在 Chrome 中可以,但 Firefox, Safari 中都是无效的。就算可行,你也不能完全保证表单被完全提交,因为浏览器已经关闭,和服务器的连接可能还没建立就已经中断,也不能保证在提交失败的情况下给出提示。
所以我的建议还是手动提交,然后在 onbeforeunload 中添加一个变量来判断表单是否已经被提交,如果没有,刷新或离开时提示,反之直接退出。
没。。。其实我想的是 跳出个
if(confirm(“离开将提交当前试卷,确定离开吗?”))
提交。。。
else
不提交
然后真正实现的话 可以用onbeforeunload 提示 onunload 进行提交操作
不管是用那种方法,在浏览器关闭的瞬间提交表单是不现实的。
你只能做到先定义两个变量
1、formChanged = false,如果表单有变化,formChanged = true。
2、formSubmitted = false,当手动提交时,formSubmitted = true。
在离开页面的时候检查这两个变量
如果 formChanged = true 且 formSubmitted = false,提示用户,如果点击确认,返回手动提交,否则不提交直接离开页面。
如果 formChanged = true 或 false,且 formSubmitted = true,就不需要提示,可以直接离开。
所以结论就是用户必须手动提交表单。
但是 这样的话 如果退出 不是又可以重新进入到这个页面了。。。
额,不过公司说限定用IE。。。分给你吧 谢了
js关闭浏览器窗口
js关闭浏览器窗口,不弹出提示框。支持ie6+,火狐,谷歌等浏览器。<html>
<head />
<body>
<script type="text/javascript">
function closeWin()
window.opener=null;//window的opener对象置为null
window.open('','_self','');//本页面刷新
window.close();//窗口关闭
</script>
<!--点击事件触发-->
<a onclick="closeWin()" href="#">logout</a>
</body>
</html>
Vue中监听窗口关闭事件,并在窗口关闭前发送请求
mounted() {
window.addEventListener('beforeunload', e => this.beforeunloadHandler(e))
window.addEventListener('unload', e => this.unloadHandler(e))
},
destroyed() {
window.removeEventListener('beforeunload', e => this.beforeunloadHandler(e))
window.removeEventListener('unload', e => this.unloadHandler(e))
},
methods: {
beforeunloadHandler(){
this._beforeUnload_time=new Date().getTime();
},
unloadHandler(e){
this._gap_time=new Date().getTime()-this._beforeUnload_time;
debugger
//判断是窗口关闭还是刷新
if(this._gap_time<=5){
//处理的事情
}
},
}
以上是关于js如何监听窗口的关闭?的主要内容,如果未能解决你的问题,请参考以下文章