2009-05-06 12 views
3

Ich habe mir hier ein paar Threads angeschaut, meistens benutzt: window.onbeforeunload = Funktion (e) { var e = e || Fenster.Ereignis;Gibt es eine Möglichkeit, eine Seite durch JavaScript zu erkennen?

// IE & Firefox if (e) { e.returnValue = 'Sind Sie sicher?'; }

// Für Safari zurück 'Sind Sie sicher?'; };

aber scheint dies die Situation der erfrischenden Seite und schließen Seite zu mischen, gibt es eine Möglichkeit, diese beiden Situationen zu unterscheiden?

Antwort

2

Es gibt nicht wirklich eine Möglichkeit, die zwei verschiedenen Ereignisse in Javascript zu unterscheiden. Sie können den GMail-Ansatz verwenden und AJAX für alles verwenden, um nie ein erneutes Laden der Seite zu verursachen. Dies bedeutet, dass "OnBeforeUnload" nur aufgerufen wird, wenn der Benutzer die Seite verlässt. Die Alternative besteht darin, JS auf alle Ihre Links zu setzen, um das OnBeforeUnload-Skript zu deaktivieren, wenn Sie auf einen Link klicken, aber Sie möchten nur, dass das Even auch ausgelöst wird, wenn der Browser tatsächlich geschlossen wird.

Was den Browser betrifft, gibt es keinen Unterschied zwischen dem Benutzer, der auf einen Link klickt, um von Ihrer Seite weg zu navigieren, und dem Schließen des Browsers.

3
function OnUnLoad() 
{ 
    if (window.event.clientY < 0 && window.event.clientX < 0) 
    { 
     //cleanup code goes here... 
    }  
} 

Dies scheint für mich auf allen Browsern zu funktionieren. Das Schließen von Tabs scheint jedoch Probleme zu verursachen. Tatsächlich gibt es keinen "dokumentierten" Weg, dies zu tun.

Verwandte Themen