14
window.addEventListener("onbeforeunload",function() {return "are you sure?"}); 

^Esto no parece funcionar en absoluto ... ... la página simplemente cierre sin mostrar el cuadro de confirmación ...addEventListener que no trabajan con onbeforeunload

que darse cuenta de que ...

window.onbeforeunload = function() {return "are you sure?"} 

Funcionará, pero quiero agregar a la funcionalidad (por ejemplo, agregar muchos oyentes de eventos a la función "onbeforeunload") no reescribir la función por completo!

Respuesta

20

Quite on de onbeforeunload.

Además, tenga en cuenta que addEventListener no funcionará en los IE más antiguos y posiblemente en otros navegadores. Si desea un enlace de eventos consistente, use una biblioteca.

+0

Oh, lollllll, sabía que sería algo estúpido -.- muchas gracias! – zconnelly13

+2

Aquí está la solución de varios navegadores para addEvent: 'function addEvent (evt, fn, useCapture) {if (this.addEventListener) {this.addEventListener (evt, fn, useCapture); return true;} else if (this.attachEvent) {var r = this.attachEvent ('on' + evt, fn); return r;} else this ['on' + evt] = fn;} Object.prototype.addEvent = addEvent; '(escriba la función como esta : object.addEvent (event, function, useCapture);). – Mageek

+2

que parece que no funciona en el último FF - 14.0.1 más – Marcin

13

Existe un "ejemplo de trabajo casi de navegador cruzado" en Mozila Developer Network API reference for beforeunload event. Usa su código

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

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

no importa en qué dirección lo hago No puedo personalizar el mensaje – toddmo

+0

@toddmo Hoy en día, los navegadores no muestran el mensaje personalizado. Esa es una característica de seguridad/UX. Ver https://www.chromestatus.com/feature/5349061406228480. O la página MDN vinculada allí. Esto es algo que surgió después de que se escribió la respuesta. – user7610

+0

Gracias, finalmente lo vi :) – toddmo

0

No hay prefijo on para los EventListeners pero es aplicable o ¿Puedo decir necesario para manejadores de sucesos

Por lo tanto, sólo tener en cuenta que

manejadores de sucesos = prefijo de

E ventListeners = prefijo fuera

Cuestiones relacionadas