4

我的表单包含多个按钮和超链接,我想在浏览器的后退按钮上显示警报。我使用了以下代码,它在 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.';
                  }
              };

      };
4

2 回答 2

5

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

window.onbeforeunload = null;

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

例如:

document.getElementById('myLink').onclick = function () {
    window.onbeforeunload = null;
};
于 2013-07-24T10:47:28.320 回答
2

使用此 beforeunload 只会在浏览器关闭时发生

    函数确认退出()
    {
        $.ajax({
            类型:“发布”,
            url: site_url + 'welcome_login/logout',
            成功:函数(数据)
            {
            }
        });
    }
    $(window).on('mouseover', (function () {
        window.onbeforeunload = null;
    }));
    $(window).on('mouseout', (function () {
        window.onbeforeunload = 确认退出;
    }));

关闭浏览器窗口时鼠标移出

于 2015-09-02T07:55:02.857 回答