如何防止按钮和链接事件触发window.onbeforeunload事件

时间:2013-07-24 10:34:50

标签: javascript onbeforeunload

我的表单包含多个按钮和超链接,我想在浏览器的后退按钮上显示警报。 我使用下面的代码在Chrome和Safari上工作正常,但在IE和Firefox中无效:

       window.onload = function() {

            var btnClicks = document.getElementsByClassName('noPopup');
            var links = document.getElementsByTagName('a');

            for (var i = 0; i < links.length; i++) {
                links[i].onclick = setGlobal;
            }
            for (var i = 0; i < btnClicks.length; i++) {
                btnClicks[i].onclick = setGlobal;
            }
            function setGlobal() {
                window.btn_clicked = true;
                window.linkClicked = true;
            }

              window.onbeforeunload = function() {
                  if (!window.btn_clicked || !window.linkClicked) {
                      return 'Would you like to save first.';
                  }
              };

      };

2 个答案:

答案 0 :(得分:5)

IE中的

- 如果您不想触发onbeforeunload - 您需要做的就是将此事件设置为null,如下所示:

window.onbeforeunload = null;

所以您需要做的是 - 向所有按钮和链接(将用户重定向到不同的URI)添加一个click事件监听器,并在该监听器内部 - 将onbeforeunload事件监听器设置为{{1一旦点击它们(在继续正常的链接/按钮操作之前。否则 - 将其设置为功能(就像你的代码中一样)。

e.g:

null

答案 1 :(得分:1)

使用这个beforeunload只会在浏览器关闭时发生,在刷新任何锚点时都不会发生,并且它还会在卸载事件之前通过排除隐藏内置弹出消息的返回来充当卸载事件


    function confirmExit()
    {
        $.ajax({
            type: "POST",
            url: site_url + 'welcome_login/logout',
            success: function (data)
            {
            }
        });
    }
    $(window).on('mouseover', (function () {
        window.onbeforeunload = null;
    }));
    $(window).on('mouseout', (function () {
        window.onbeforeunload = confirmExit;
    }));

关闭浏览器窗口时出现鼠标输出