Kann ich einen Bestätigungsdialog öffnet sich, wenn der Benutzer das Fenster in Safari / Chrome schließt?

StackOverflow https://stackoverflow.com/questions/803887

Frage

Im IE und FF, i ein Ereignishandler onBeforeUnload anbringen kann, und durch eine Zeichenfolge in eine Eigenschaft des Ereignisses vorbei, wird der Benutzer ein Dialog gefragt werden, ob er will mit dem „Entladen“ (entweder Schließung weiter das Fenster oder die Navigation weg).

Safari und Chrome nicht unterstützt onBeforeUnload und onUnload scheint zu spät zu sein. Gibt es eine Möglichkeit die gleiche Funktionalität in Safari / Chrome zu replizieren?

Hinweis: Ich versuche nicht, den Benutzer als Geisel zu halten. Ich weiß, das ist Nörgeln und un-cool. In der Tat geht meine Seite zu dem großen Längen der Benutzer frei zu lassen, und haben alles an seinem Platz, wenn sie zurückkommen. Aber ich bin Hosting andere Websites in IFrames, und manchmal diese entscheiden loswerden, mich zu bekommen und den Browser zu übernehmen, das ist, was ich versuche zu vermeiden.

Danke!

War es hilfreich?

Lösung

Das funktioniert perfekt für mich sowohl in Chrome und Safari:

<html><body><p>Test</p>
<script>window.onbeforeunload = function() { return "Sure?"; }</script>
</body></html>

Wenn ich versuche, das Fenster zu schließen, erhalte ich die Eingabeaufforderung.

Andere Tipps

Stackoverflow selbst verwendet onbeforeunload, und es funktioniert für mich in Safari fein:

function setConfirmUnload(a){window.onbeforeunload=a?function(){return a}:null}

Ich habe es in Chrom und es scheint zu funktionieren gut mit diesem:

<body onunload="alert('x');" onbeforeunload="test1();">

Diese Frage wird etwas detaillierter in anderen neueren Frage Stackoverflow behandelt: Einstellung onbeforeunload auf das Körperelement in Chrome und IE jQuery

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top