【问题标题】:fire page unload event only on close tab/window仅在关闭选项卡/窗口上触发页面卸载事件
【发布时间】:2014-09-23 11:54:13
【问题描述】:

我只想在关闭选项卡/窗口上显示警报。

现在我做了如下所示的事情,但它甚至在“F5”上触发,浏览器的后退按钮...... 但我只希望它在标签/窗口关闭。

我在这方面做了很多尝试,也检查了很多 stackoverflow 链接,但没有得到任何解决方案

window.onbeforeunload = function(e) {
                return confirmExit()
            }
            function confirmExit() {
                //my logic
                return false;
            }

还添加了以下代码,以防止在点击我网站中的任何链接时出现 onbeforeunload

$(document).ready(function() {
                $('a[rel!=ext]').click(function() {
                    window.onbeforeunload = null;
                });
                $('form').submit(function() {
                    window.onbeforeunload = null;
                });
            });

所以请帮帮我。

【问题讨论】:

标签: javascript jquery


【解决方案1】:

出于安全原因,这不可能或不应该是可能的。为了确定性地知道用户何时以及如何与用户代理(浏览器)交互,您(应该)必须有权访问浏览器的更高安全上下文。页面脚本应该被明确禁止具有此访问权限。

您会知道何时卸载页面(onbeforeunloadonunload 事件),但不知道页面卸载的明确原因。

请注意,您可以并且应该通过window.addEventListener()beforeunload 事件来处理此事件。使用window.onbeforeunloadwindow.onunload 而不是window.addEventListener() 的限制要大得多,并且不允许与可能加载的其他脚本共享事件,也不允许仅删除您自己的事件处理程序。您应该养成使用window.addEventListener() 和命名函数的习惯,以便在您不仅限于在页面上运行自己的脚本的环境中运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 2012-07-30
    相关资源
    最近更新 更多