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.
No, no se dispara en todos los navegadores. No es compatible con navegadores móviles, por ejemplo, Safari, Opera Mobile y mini, Dolphin. Consulte ¿Existe algún método alternativo para usar antes de la descarga en el safari móvil?