from example javascript cross-browser onbeforeunload

example - javascript download file from url



Crossbrowser antes de descargar? (5)

Basado en la solución de Tushar Ahirrao, esto funciona en el navegador cruzado y se activa una vez (Funciona en Firefox, Chrome, lo que sea)

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

Pega la plantilla superior para vaciar el archivo y edítalo

¿Incendio window.onbeforeunload() en todos los navegadores? Necesito una funcionalidad onbeforeunload que sea compatible al menos con IE6 y FF3.6.

Para IE, onbeforeunload() parece ser solo compatible con IE9


Encontré una solución para Firefox con la función setTimeout porque no tiene el mismo comportamiento que otros navegadores 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


Entonces puedes usar ambos como este:

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


Es mi recuerdo que IE fue el único navegador que implementó antes de la onbeforeunload , pero algunos navegadores se han encargado de implementarlo.

Para resumir, IE es el único navegador (con excepciones muy finitas) en el que encontrarás constantemente este evento.