2016-04-30 8 views
0

ich dieses Problem vor geschrieben gesehen, aber onbeforeunload nicht für mich in Windows Chrome funktioniert. Ich verwende Version 49.0.2623.112 m. Hier ist mein Code:Onbeforeunload funktioniert nicht in Windows Chrome

<body onbeforeunload="handleBrowserCloseButton();"> 

function handleBrowserCloseButton() { 

//Call method by Ajax call 
alert('Browser close button clicked');  

} 

Wenn ich von der Seite weg navigieren oder das Browserfenster schließe, passiert nichts. Jede Hilfe würde sehr geschätzt werden.

+0

Dank. Ich habe tatsächlich versucht, Code auszuführen, um eine Datei zu schreiben. Ich konnte es zur Arbeit bringen. – Rob

Antwort

1

Sie benötigen einen Nicht-Leerwert aus der Callback-Funktion zurückkehren, da Sie sonst keine Nachricht Dialog sehen.

So müssen Sie zwei Dinge ändern:

<body onbeforeunload="return handleBrowserCloseButton();"> 

und

function handleBrowserCloseButton() { 
    return 'Browser close button clicked'; 
} 

Außer, dass Sie window.addEventListener('beforeunload', ...) stattdessen verwenden sollten.

MDN: WindowEventHandlers.onbeforeunload: Notes:

Wenn dieses Ereignis einen Nicht-Leerwert zurückgibt, wird der Benutzer aufgefordert, die Seite entladen zu bestätigen. In den meisten Browsern wird der Rückgabewert des Ereignisses in diesem Dialogfeld angezeigt. In Firefox 4 und höher wird die zurückgegebene Zeichenfolge dem Benutzer nicht angezeigt. Stattdessen zeigt Firefox die Zeichenfolge "Diese Seite fordert Sie auf, zu bestätigen, dass Sie gehen möchten - Daten, die Sie eingegeben haben, werden möglicherweise nicht gespeichert." Siehe Bug 588292.

Da sollte die Funktionalität Net missbräuchlich verwendet werden, um das Benutzerformular zu verhindern, dass die Seite zu verlassen, Funktionen wie alert oder confirm werden nicht funktionieren in dem onbeforeunload Rückruf.

MDN: WindowEventHandlers.onbeforeunload: Notes:

Seit dem 25. Mai 2011, dass die HTML5-Spezifikation besagt, ruft window.alert(), window.confirm() und window.prompt() Methoden können während dieses Ereignisses ignoriert werden. Weitere Informationen finden Sie in der HTML5-Spezifikation.

+0

Danke. Ich habe tatsächlich versucht, Code auszuführen, um eine Datei zu schreiben. Ich habe den Code in die Funktion eingefügt und es hat funktioniert. – Rob

+0

@Rod Ich sage nicht, dass Sie keinen Code ausführen können, aber sie können nicht 'alter' eine Nachricht angezeigt werden soll. Wenn sich Ihr tatsächlicher Code von Ihrer Frage unterscheidet, müssen Sie den Code anzeigen, den Sie ausführen möchten, und nicht etwas anderes. –

0

Alarm wird auf dieses Ereignis nicht. Kasse Abschnitt von Noten in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload

+0

können Sie den Vorschlag für diesen Link ausprobieren, der besagt: Sie können und sollten dieses Ereignis über window.addEventListener() behandeln [https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/ addEventListener] und die beforeunload [https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload] Ereignis. –

0
window.onbeforeunload = function() { 

fake(); 
} 

geprüft und in allen Browsern funktioniert.

Verwandte Themen