如何在关闭选项卡时使window.onbeforeunload jquery工作?

时间:2014-01-06 07:02:57

标签: jquery

我正在使用以下代码,该代码将显示对话框“你确定要离开吗?”甚至在重定向到另一页时。我只需要在关闭标签时弹出这个对话框。 那么,这段代码需要进行哪些修改?

<script>
        window.onbeforeunload = function (event) {
            var message = 'Sure you want to leave?';
            if (typeof event == 'undefined') {
                event = window.event;
            }
            if (event) {
                event.returnValue = message;
            }
            return message;
        }
        $(function () {
            $("a").not('#lnkLogOut').click(function () {
                window.onbeforeunload = null;
            });
            $(".btn").click(function () {
                window.onbeforeunload = null;
            });
        });
    </script>

3 个答案:

答案 0 :(得分:0)

我认为我们没有特定于标签的事件。 你在这里所能做的就是定义一个全局变量,并在点击重定向到其他页面的链接时设置它。 通过检查是否设置了变量,可以防止onbeforeunload事件相应地触发。

答案 1 :(得分:0)

我认为您需要显示“警报”窗口才能使其正常工作:

window.onbeforeunload = function (event) {
    var message = 'Sure you want to leave?';
    if (typeof event == 'undefined') {
        event = window.event;
    }
    if (event) {
        event.returnValue = message;
    }

    alert(message);

    return message;
}
$(function () {
    $("a").not('#lnkLogOut').click(function () {
        window.onbeforeunload = null;
    });
    $(".btn").click(function () {
        window.onbeforeunload = null;
    });
});

答案 2 :(得分:0)

你想要达到什么目标?

实际上,

beforeunload可以防止用户可能丢失更改(例如未保存的工作)的情况下的页面导航。

您不应该尝试区分关闭标签的用户和通过其他方式离开当前页面的用户(例如超链接)。