onunload не работает должным образом

Наблюдаемые сценарии:

1) При закрытии браузера beforeunload событие происходит, но unload событие не сработало.

2) При закрытии вкладки оба beforeunload событие и unload событие уволено.

Вопрос:

Как я могу уволить unload метод при закрытии браузера?

Код:

    var inFormOrLink = false;
    var flag = false;

    $(document).ready(function () {
        $(window).bind("beforeunload", function () {
               return "You are about to close the window";
        });
        $(window).on("unload", function () {
            if (!inFormOrLink)
                window.open('../Account/Login?admin=admin', "_blank");
        });
    });

    $(function () {
        $("a").click(function () {

            if (!flag) {
                inFormOrLink = true;
                $(window).unbind('beforeunload');
                $(window).unbind('unload');
            }
            else {
                // inFormOrLink = false;
                $(window).bind('beforeunload');
                $(window).bind('unload');
            }
        });

        $(".btn").click(function () {

            if (!flag) {
                inFormOrLink = true;
                $(window).unbind('beforeunload');
                $(window).unbind('unload');
            }
            else {
                inFormOrLink = false;
                flag = false;
                $(window).bind('beforeunload');
                $(window).bind('unload');
            }

        });
        $("body").keydown(function (e) {
            if (e.which == 116 || e.which == 117) {
                inFormOrLink = true;
            }
            else if (e.ctrlKey && e.keyCode == 82) {
                inFormOrLink = true;
            }
            else if (e.which == 8) {
                var tag = e.target.tagName.toLowerCase();
                inFormOrLink = true;
                if (tag != "input") {
                    e.preventDefault();
                }
            }
            else {
                inFormOrLink = false;
                $(window).bind('unload');
            }
        });
    });

'

1 ответ

onunload Событие теоретически должно выполняться в том случае, если вы упомянули, однако, существует множество браузеров, каждый из которых реализуется другой командой. Поскольку вы наблюдали ошибку в нескольких браузерах, я предлагаю вам прикрепить обработчики событий к beforeunload вместо unload, В этом случае вы решаете проблему. Другая возможность - запустить unload событие, как это:

$(window).unload();
Другие вопросы по тегам