javascript 浏览器后退按钮单击或页面刷新时发出警报

nfzehxib  于 2023-06-28  发布在  Java
关注(0)|答案(5)|浏览(127)

我见过的同一功能是多个网站包括SO。我也在努力实现这一点。下面是到目前为止的代码。

<script>
            var myEvent = window.attachEvent || window.addEventListener;
            var chkevent = window.attachEvent ? 'onbeforeunload' : 'beforeunload'; 

            myEvent(chkevent, function(e) { // For >=IE7, Chrome, Firefox
                var confirmationMessage = ' ';  
                (e || window.event).returnValue = confirmationMessage;
                return confirmationMessage;
            });
        </script>

问题是上面的代码在Chrome和IE中工作正常,但当我试图在Firefox上测试时,它不工作。我检查了Firebug,但没有错误。我更新了Firefox,版本是47.0.1。
但问题未解决。
任何建议都会有帮助。
伙计们,如果你有比这更好的代码,那么它也会有帮助。

ifsvaxew

ifsvaxew1#

使用下面的代码,我在Firefox中测试过,运行良好:

window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "\o/";

  (e || window.event).returnValue = confirmationMessage; //Gecko + IE
  return confirmationMessage;                            //Webkit, Safari, Chrome
});
pcww981p

pcww981p2#

我测试了这段代码,它在Firefox和Chrome上工作,即使关闭了Firebug控制台:

<script>
            window.onbeforeunload = function (e) {
                var message = "Are you sure ?";
                var firefox = /Firefox[\/\s](\d+)/.test(navigator.userAgent);
                if (firefox) {
                    //Add custom dialog
                    //Firefox does not accept window.showModalDialog(), window.alert(), window.confirm(), and window.prompt() furthermore
                    var dialog = document.createElement("div");
                    document.body.appendChild(dialog);
                    dialog.id = "dialog";
                    dialog.style.visibility = "hidden";
                    dialog.innerHTML = message;
                    var left = document.body.clientWidth / 2 - dialog.clientWidth / 2;
                    dialog.style.left = left + "px";
                    dialog.style.visibility = "visible";
                    var shadow = document.createElement("div");
                    document.body.appendChild(shadow);
                    shadow.id = "shadow";
                    //tip with setTimeout
                    setTimeout(function () {
                        document.body.removeChild(document.getElementById("dialog"));
                        document.body.removeChild(document.getElementById("shadow"));
                    }, 0);
                }
                return message;
            };
        </script>

我找到了这个脚本crossbrowser-onbeforeunload.js。跨浏览器兼容。

mzaanser

mzaanser3#

  • window.onbeforeunload* 是一个很好的方法。但似乎只有当用户与网站进行交互(点击或滚动)时,它才能在Firefox中工作。否则函数不会触发。Chrome,另一方面工作得很好。

注意:为了防止不必要的弹出窗口,一些浏览器不显示在beforeunload事件处理程序中创建的提示,除非页面已经被交互;有些根本不显示它们
文档

cnh2zyt3

cnh2zyt34#

这是我的工作通过这个代码。

window.onbeforeunload = function () {
    return 'Are you sure? Your work will be lost. ';
};
mspsb9vt

mspsb9vt5#

试试这个

window.addEventListener('beforeunload', function (event) {
  event.preventDefault();

  event.returnValue = 'Are you sure you want to leave this page?';
});

相关问题