crossbrowser onbeforeunload?

window.onbeforeunload()在所有的浏览器中触发吗? 我需要一个至less由IE6和FF3.6支持的onbeforeunloadfunction。

对于IE, onbeforeunload()似乎只能被IE9支持

我发现了一个setTimeout函数的Firefox的解决方法,因为它没有像其他Web浏览器一样的行为。

 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; } 

GitHub: https : //github.com/Aelios/crossbrowser-onbeforeunload

不,它不会在所有浏览器中触发。 移动浏览器(例如Safari,Opera Mobile和mini,Dolphin)不支持此function。 请参阅移动Safari上使用onbeforeunload的替代方法吗?

build立在图沙尔Ahirrao解决scheme这个作品跨浏览器和触发一次(工作在Firefox,铬,无论)

 <html> <head> <script type="text/javascript"> var app = {}; app.unloaded = false; app.unload = function() { if (app.unloaded) return; else app.unloaded = true; // your code here return "YO"; }; </script> </head> <body onunload="return app.unload();" onbeforeunload="return app.unload();"> YO </body> </html> 

粘贴上面的模板清空文件,然后编辑它

据我所知,IE是唯一一个实现onbeforeunload浏览器,但是一些浏览器已经自己实现了。

长话短说,IE是关于唯一的浏览器(除了非常有限的例外),你会一直在这个事件中find。

那么你可以使用这样的两个:

 <body onunload="functionName();" onbeforeunload='functionName();' >