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

^To nie wydają się działać ... w ogóle ... strona będzie po prostu zamknąć bez wyświetlania okna z potwierdzeniem ...addEventListener nie pracuje z onbeforeunload

Zdaję sobie sprawę, że ...

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

Działa, ale chcę dodać do funkcjonalności (np. Dodać wiele detektorów zdarzeń do funkcji "onbeforeunload"), nie przepisując całkowicie funkcji!

Odpowiedz

20

Usuń on z onbeforeunload.

Pamiętaj też, że addEventListener nie działa w starszych wersjach IE i prawdopodobnie w innych przeglądarkach. Jeśli chcesz spójnego powiązania zdarzeń, użyj biblioteki.

+0

O, lollllll, wiedziałem, że to będzie głupie --.- Dziękuję bardzo! – zconnelly13

+2

Oto rozwiązanie dla addEvent w różnych wersjach przeglądarkowych: '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 to ['on' + evt] = fn;} Object.prototype.addEvent = addEvent; '(zapisz funkcję podobną do tej : object.addEvent (event, function, useCapture);). – Mageek

+2

, który prawdopodobnie nie działa już w najnowszej wersji FF - 14.0.1 – Marcin

13

Istnieje "prawie działający przykład przeglądarki" w Mozila Developer Network API reference for beforeunload event. Użyj ich kodu.

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

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

Niezależnie od tego, w jaki sposób to zrobię Nie mogę spersonalizować wiadomości – toddmo

+0

@toddmo Obecnie przeglądarki nie wyświetlają niestandardowego komunikatu. To jest funkcja bezpieczeństwa/UX. Zobacz https://www.chromestatus.com/feature/5349061406228480. Lub połączoną stronę MDN. Jest to coś, co pojawiło się po napisaniu odpowiedzi. – user7610

+0

Dzięki, że wreszcie to zobaczyłem :) – toddmo

0

Nie ma przedrostek on dla eventListeners ale to dotyczy lub może mówię to konieczne dla EventHandlers

Więc po prostu pamiętać, że

EventHandlers = prefiks na

E ventListeners = prefiks wyłączony