仅在关闭选项卡/窗口上触发页面卸载事件

时间:2014-09-23 11:54:13

标签: javascript jquery

我想仅在关闭标签/窗口上显示警告。

现在我已经做了如下所示的事情,但即使在浏览器的后退按钮上也会触发...... 但我只想在标签/窗口关闭。

我在这方面做了很多尝试,并检查了很多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;
                });
            });

所以请帮帮我。

1 个答案:

答案 0 :(得分:1)

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

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

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