如何使beforeunload事件仅在浏览器会话退出时触发?

How can I make the beforeunload event fire only when a browser session is exited

本文关键字:退出 会话 浏览器 beforeunload 何使 事件      更新时间:2023-09-26

免责声明-我应该注意到我的JavaScript相当弱。

我正在向我的网站插入代码,这样它就可以覆盖一个场景,当用户退出浏览器时,他得到一个众所周知的提示"你确定要退出吗?"类似于确认信息。

我正在尝试在我的网站上实现这段JavaScript的过程:

   <script language="JavaScript" type0"text/javascript">
var foo = true;
window.onbeforeunload = askBeforeExiting;
function askBeforeExiting() {
  if (foo)
    return "Are you sure you want to leave this page?";
}
</script>

代码不仅在尝试退出浏览器时抛出确认消息。但是,当点击指向站点另一部分的链接和其他相关事件时,它也会抛出确认。

是否有一种方法来修改这段代码,只是捕捉浏览器关闭场景?我得到这样的场景,如从任务管理器或从powershell命令杀死浏览器不能被捕获。我只想要当前用户会话中可能退出浏览器的场景。

我一直在网上看各种各样的例子,通过代码参考,似乎不能准确地追踪我想做什么。这可能吗?

我以前在一个页面有一个表单的地方这样做过,并且我只想在对表单进行更改时请求用户确认。您也可以做类似的事情,将单击事件附加到所有链接,例如,将foo设置为false。比如:

var links = document.getElementsByTagName('a');
for(var i = 0, l = links.length; i < l; i++) {
    links[i].onclick = function () {
        foo = false;
    }
}

编辑:根据你的网站,你可能需要考虑许多其他的行动,但是根据给出的信息,这应该是一个好的开始,因为没有直接的方法来完成你所追求的。