Einige Websites, wie StackExchange, zeigen die Meldung "Möchten Sie diese Seite wirklich verlassen?" Dialogfeld, wenn Sie versuchen, unter bestimmten Bedingungen zu beenden, z. B. wenn Sie einen Beitrag haben, dessen Bearbeitung noch nicht abgeschlossen ist. Das ist hilfreich!
Unglücklicherweise verwenden böswillige oder infizierte Websites dieselbe Funktion, um zu sagen: "Hey! Sie haben unser Malware- Antivirus nicht installiert , um die 111 Viren zu beseitigen, die wir definitiv nicht auf Ihrem Computer finden wollen!" Die Optionen "Auf dieser Seite bleiben" und "Auf dieser Seite bleiben" werden durch die Optionen "Seien Sie sicher. Installieren Sie unser Produkt" und "Erschießen Sie sich selbst" ersetzt. Das ist nicht hilfreich!
Javascript kann einige böse Sachen machen. Wie soll ich reagieren, wenn ich in einem dieser Dialoge versuche, eine eindeutig böswillige Website nicht zu verlassen? Ist es sicher, auf "Diese Seite verlassen" zu klicken oder durch was auch immer sie den Text ersetzt haben? Könnte eine Site das Verhalten der Schaltfläche ändern oder meinen Versuch abfangen, weg zu navigieren und einen eigenen gefälschten Dialog zu zeichnen, der macht, was ein Angreifer will, wenn ich darauf klicke?
Antworten:
Trotz der Aussage einiger dieser Dialoge können sie nichts Bösartiges tun . Sie können jederzeit auf OK oder Seite verlassen klicken , um die betreffende Seite ohne Konsequenzen zu schließen.
Wenn das Dialogfeld zu lang ist und die Schaltflächen nicht auf dem Bildschirm angezeigt werden , können Sie drückenEnter , um das Schließen der Seite zu bestätigen.
Wenn Sie keine Tastatur (Touchscreen-Geräte) haben, verwenden Sie das folgende Lesezeichen oder lesen Sie die Antwort von SimpleSimon (nur Chrome).
Nun einige Details.
Es gibt nur eine Möglichkeit, eine Aktion auszuführen, wenn eine Seite geschlossen wird: Durch das
onbeforeunload
Ereignis. Natürlich kann dies leicht gegen den Benutzer verwendet werden (zum Beispiel, wenn er versucht, eine Seite zu schließen, öffnet es die Kopie in einem neuen Fenster), so dass es sehr begrenzt ist.Eigentlich ist das einzig Vernünftige, was Sie tun können, ein Dialogfeld mit benutzerdefiniertem Text und zwei Schaltflächen zu öffnen, eine zum Verlassen der Seite und eine zum Bleiben. Eine Seite kann mit diesem Dialogfeld nur den Text definieren. Schaltflächen und Titelleiste sind unveränderlich. Hier ist ein Screenshot von Firefox 3.6: ( sehr alte Version von Firefox)
Natürlich können Sie sicher sein, dass einige Leute es früher oder später gegen Sie verwenden, wenn Sie Popups mit beliebigem Text und nur OK / Abbrechen- Schaltflächen anzeigen lassen.
Im obigen Screenshot bedeutet OK nur "Diese Seite verlassen", aber die benutzerdefinierte Beschreibung schlägt etwas mehr vor. Daher haben Browser die Dialoge geändert, sodass es schwieriger ist, sie irreführend zu machen. Beispielsweise scheinen neuere Versionen von Firefox den benutzerdefinierten Text zu ignorieren:
Chrome zeigt den benutzerdefinierten Text an, fügt jedoch immer eine Frage an, in der der Benutzer gefragt wird, was er tun möchte, und die Schaltflächen geben explizit ihre Aktionen an:
Hier ist Internet Explorer 10, auch "katzenanfällig":
Opera 12 ignoriert das
onbeforeunload
Ereignis einfach und wenn Sie versuchen, einen Tab wie diesen zu schließen, wird er wie jeder andere geschlossen. Ich habe die neueste Version von Opera noch nicht getestet.Also, um die wichtigsten Dinge zusammenzufassen:
Sie können das
onbeforeunload
Ereignis deaktivieren , wenn Sie möchten, und so effektiv verhindern, dass Seiten Sie zum Verlassen oder Bleiben auffordern. Hier ist ein browserübergreifendes Userscript . (Bildlauf nach unten, wenn der Link tot ist)Wenn Sie sich auf einer bestimmten Website befinden, auf der ein schädliches Popup angezeigt wird, und Sie immer noch nicht auf Verlassen klicken können , können Sie ein Lesezeichen erstellen, um es zu entfernen. Klicken Sie mit der rechten Maustaste auf die Lesezeichenleiste, wählen Sie " Neues Lesezeichen" (oder eine entsprechende Option) und fügen Sie diese als URL ein:
Klicken Sie dann einfach auf dieses Lesezeichen und das Popup wird vorübergehend von der aktiven Seite entfernt.
Wenn Sie testen möchten, wie diese Popups in Ihrem Browser aussehen, oder das Bookmarklet / Userscript testen möchten, erstellen Sie eine Textdatei mit dem folgenden Code und speichern Sie sie als
.html
Datei:Es sieht so aus, als ob der Userscript-Link im Moment tot ist. Hier ist eine Kopie aus dem Cache von archive.org . Alle Kredite für den ursprünglichen Skriptschöpfer.
quelle
Tatsächlich hat FireFox eine ziemlich raffinierte (und einfache) Lösung. Wenn Sie tippen
in die Adressleiste und scrollen Sie dann nach unten zu
Wenn Sie den Wert auf "True" setzen, werden die Popups "Leave Page" nicht mehr angezeigt. In Firefox. Schade, dass es in Chrome keine ähnliche Problemumgehung gibt.
quelle
Die einfachste Lösung in Chrome besteht darin, die Registerkarte zum Absturz zu bringen.
Tippe chrome: // crash in die Adressleiste und speichere als Lesezeichen .
Wenn Sie das nächste Mal eine solche Seite verlassen möchten, klicken Sie einfach auf das Lesezeichen und der Tab wird sofort geschlossen, ohne dass sich dies auf Ihre anderen Tabs auswirkt. Es ist nicht erforderlich, die gesamte Browsersitzung abzubrechen, wie einige andere vorgeschlagen haben.
Alternativ können Sie den Tab mit chrome: // hang aufhängen und den Tab dann einfach schließen, ohne dass JavaScript ausgeführt wird.
Nicht sicher, ob dies in anderen Browsern möglich ist.
quelle
Dies ist das Ereignis window.onbeforeunload und eine Funktion des Webbrowsers. Dies sollte also ein fester Dialog des Webbrowsers sein. Sie können es in verschiedenen Browsern versuchen und sehen, dass die Dialoge unterschiedliche Designs haben.
Aber ich nehme an, Sie könnten ein Popup mit Javascript entwickeln, das dem ursprünglichen Popup des Browsers sehr ähnlich sieht. Und wenn es ein guter Entwickler ist, würde er auch den Browsertyp überprüfen, bevor der Dialog angezeigt wird. ;)
Um sich also sicher zu sein, dass es sich um ein Originaldialogfeld handelt, sollten Sie parallel das richtige Dialogfeld überprüfen, dh hier: http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onbeforeunload.htm
Weitere Informationen zur Veranstaltung finden Sie hier:
https://developer.mozilla.org/en-US/docs/Web/API/window.onbeforeunload
http://msdn.microsoft.com/en-us/library/ms536907% 28VS.85% 29.aspx
quelle
Schnelle Problemumgehung, wenn Sie dem "Popup" und seinen Absichten / Aktionen nicht vertrauen:
Für Chrome:
Escape, um Popup zu entfernen
Klicken Sie mit der rechten Maustaste auf Seite
Wählen Sie Inspizieren
Scrolle nach oben
Klicken Sie mit der rechten Maustaste auf das Tag
Knoten löschen
Tab schließen
Ich bin sicher, dass die anderen Browser ähnliche Optionen haben.
quelle