Benachrichtigen Sie Benutzer auf browser-schließen nur
Bin ich versucht zu implementieren Benachrichtigung, wenn der Benutzer schließt oder reloades der Seite.Crrently ich bin mit dem folgenden code
function unloadPage(){
return "Your changes will not be saved.";
}
window.onbeforeclose = unloadPage;
Diese funktioniert einwandfrei.Aber das problem ist, das passiert immer dann, wenn eine navigation stattfindet.Das ist entweder eine Aktualisierung der Seite oder ein Formular oder einen hyperlink klicken oder was auch immer navigation erfolgt..ich will einfach nur, um die Arbeit dieser code nur für die browser-erfrischend und schließen.Ich wusste, dass über das setzen von Flagge und überprüft es.
Aber ich habe so integrieren Sie diese in einer großen Anwendung.So wird es schwierig sein, fügen Sie den code in jede Seite.So gibt es einen einfachen Weg.
Gibt es eine Möglichkeit, zu fangen, die aktualisieren oder browser-cosing, so dass es verwenden kann.
- Sie können nicht fangen einen browser der Nähe Anfrage. Sie können jedoch, entfernen Sie die onbeforeunload-handler, wenn Sie wissen, dass die form wird vorgelegt, oder wenn ein link clicke.d
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beachten Sie, dass in Ihrem code, die Sie verwenden
onbeforeclose
, aber der event-name istbeforeunload
, so wird die Eigenschaft istonbeforeunload
, nichtonbeforeclose
.Nicht. Stattdessen haben Sie die Aufnahme jeder einzelnen link-und Formular-Vorlage und entweder ein flag setzen, erzählen Sie Ihren
onbeforeunload
- handler nicht einen string zurückgeben, oder entfernen Sie Ihreonbeforeunload
handler (wahrscheinlich die Flagge ist sauberer).Beispiel:
Oder ohne
setTimeout
(aber immer noch mit einem timeout):Update im Jahr 2017: beachten Sie Auch, dass als der zumindest vor ein paar Jahren, Browser nicht anzeigen der Nachricht, die Sie zurück; Sie verwenden einfach die Tatsache, wieder etwas anderes als
null
als ein flag, um zu zeigen, Ihre eigene, gebaut-in der Nachricht statt.$("button").on('click',dontWarn);
im code.Aber manchmal, wenn schlägt fehl, und die Warnung erzeugt wird.Haben Sie einige Vorschlägebutton
Elemente? Nichtinput[type=button]
?<button name="Cancel" id="Cancel" type="button">Cancel</button>
.Dies ist einer dieser Schaltflächen, auf denen der code nicht funktioniertÜberprüfen dieser link
Es gibt Ihnen Informationen, wie Sie zu behandeln onbeforeunload Veranstaltung.
Die Idee ist, ein globales flag auf der Seite. Bei jeder änderung erfolgt auf die Felder, wird dieses flag auf true gesetzt ist. Beim anklicken auf die Schaltfläche speichern, dann wird dieses flag muss auf false gesetzt werden.
In der onbeforeunload Fall, überprüfen Sie, ob das flag true ist, dann zeigt die Nachricht entsprechend.
Einer der einfache Lösungen für dein problem, eine Flagge und dann rufen Sie Ihre Funktion nur, wenn das flag gültig ist. In diesem Fall können Sie binden Sie die Anker-tags, F5 und Formular Absenden-button klicken, um Ereignisse, die als false-flag. So Ihr Alarm-bar wird nur sichtbar, wenn die oben genannten Fällen nicht passiert 🙂
Hier ist das Skript:
DEMO
(Ausführen oder aktualisieren Sie den fiddle zu sehen, die Warnung
onbeforeunload()
Ereignis, Nachricht und klicken Sie auf den link "kk" ist ,wird es nicht zeigenonbeforeunload()
Ereignis-Meldung. Versuchen Sie es in Ihrer Webseite)Habe ich eine Lösung für Sie, Sie don haben, um hinzufügen von onclick-Ereignis zu jeder tags-und alle.
Nur fügen Sie diese an eine beliebige Stelle auf Ihren Seiten .
und fügen Sie diesen code in Ihr Dokument Kopf-tag
Hoffe, das hilft
Danke