【问题标题】:How can I make the beforeunload event fire only when a browser session is exited如何仅在退出浏览器会话时触发 beforeunload 事件
【发布时间】:2013-05-14 18:16:06
【问题描述】:

免责声明 - 我应该注意到我的 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 命令中杀死浏览器。我只想要当前用户会话中可能退出浏览器的场景。

我一直在通过网络和代码参考查看各种示例,但似乎无法准确找到我想要做什么。这甚至可能吗?

【问题讨论】:

    标签: c# javascript asp.net internet-explorer


    【解决方案1】:

    我以前在页面有表单的情况下这样做过,我只想在对表单进行更改时要求用户确认。您可以执行类似的操作,例如将单击事件附加到所有链接,这会将 foo 设置为 false。比如:

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

    编辑:您可能需要考虑许多其他操作,具体取决于您的站点,但是根据所提供的信息,这对您来说应该是一个好的开始,因为没有直接的方法可以完成您所追求的目标。

    【讨论】:

    • 表单提交、页面刷新等怎么样
    • 是的,这仅涉及链接。我试图展示如何做到这一点的示例,而不是 OP 必须考虑的所有可能操作的详尽列表。
    • @Duffmaster33 是否有可用操作的列表?
    • 我似乎找不到一个,但是 W3Schools 有关于卸载的最有可能的内容:w3schools.com/jsref/event_onunload.asp 关闭窗口,提交表单,刷新页面,然后单击在我看来,链接是最常见的。
    • @duffmaster33 这是您指的列表吗? beforeunload | onbeforeunload event
    猜你喜欢
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    相关资源
    最近更新 更多