2013-02-07 11 views
6

Gibt es eine Möglichkeit, eine Funktion auszuführen, bevor ein Benutzer Browser neu laden/schließen/Seite beenden?Führen Sie die JavaScript-Funktion aus, bevor der Browser den Browser neu lädt/schließt/die Seite schließt?

Ich brauche dies für eine "Online/Offline" Status-Funktion, die ich versuche zu schreiben. Ich möchte feststellen, ob der Benutzer noch auf der Seite ist oder nicht.

Irgendwelche Ideen? :)

Vielleicht gibt es einen besseren Ansatz dazu?

+0

window.onbeforeunload = function() {...} – C5H8NNaO4

+2

window.onbeforeunload, Referenz: https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload – PatrikAkerstrand

Antwort

16

Inline:

window.onbeforeunload = function(event) { 
    // do something 
    return null; 
}; 

oder eine vordefinierte Funktion auszuführen:

window.onbeforeunload = myFunction; 

var myFunction = function(event) { 
    // do something 
    return null; 
} 

Hinweise:

Wenn dieses Ereignis einen Nicht-Leerwert zurückgibt, wird der Benutzer aufgefordert zu bestätigen Sie die Seite entladen. In den meisten Browsern wird der Rückgabewert des Ereignisses in diesem Dialogfeld angezeigt.

Seit dem 25. Mai 2011 die Staaten HTML5-Spezifikation, die window.showModalDialog() aufruft, window.alert(), window.confirm() und window.prompt() Methoden können während dieses Ereignisses ignoriert werden.

Siehe Dokumentation https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload

+2

Downvoters, interessieren sich warum? –

+0

Wenn Sie eine Zeichenfolge zurückgeben, wird dies dem Benutzer als Nachricht in einem Popup angezeigt. Ein null/void-Rückgabewert lässt den Browser wie gewohnt die Seite entladen. Siehe MDN-Referenz hier: https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload – PatrikAkerstrand

+0

-1 für das Hinzufügen von unnötigen Funktionsdeklarationen, ich werde es in +1 ändern, wenn Sie hinzufügen, dass die (wenn Der zurückgegebene Wert wird in einer Alarmbox angezeigt, in der der Benutzer gefragt wird, ob er wirklich die Seite verlassen möchte. – C5H8NNaO4

0

Versuchen Sie folgendes:

$(window).unload(function() { 
    alert("Handler for .unload() called."); 
}); 

oder dies, falls Sie Konformation Alarm wollen

<script> 
window.onbeforeunload = function(e) { 
    return 'Your dialog message'; 
}; 
</script> 
Verwandte Themen