Dieser Artikel beschreibt die Methode von JS, um zu verhindern, dass Webseiten in Iframe Framework eingebettet werden. Teilen Sie es für Ihre Referenz wie folgt weiter:
Zum Beispiel:
<skript type = "text/javaScript"> if (fenster! = ober) // Bestimmen Sie, ob das aktuelle Fensterobjekt ein top.locations.location.href = window.location.href ist; // Wenn nicht, leiten Sie automatisch die URL des Top -Objekts auf die URL, die in die Webseite </script> eingebettet ist
Dieser Code ist gültig. Es gibt jedoch ein Problem: Nachdem Sie es verwendet haben, kann niemand Ihre Webseite in das Framework einbetten, einschließlich Sie selbst.
Heute überlege ich, ob es eine Möglichkeit gibt, meine Webseiten nur in mein eigenes Framework eingebettet zu machen, nicht in den Rahmenbedingungen anderer Leute?
An der Oberfläche ist diese Frage sehr einfach. Machen Sie einfach ein Urteilsvermögen: Ob die Domain-Namen des aktuellen Frameworks und das Rahmen der obersten Ebene gleich sind und wenn die Antwort Nein lautet, wird eine URL-Umleitung durchgeführt.
if (top.location.hostname!
Unerwartet ist dieses Schreiben jedoch falsch und kann überhaupt nicht ausgeführt werden. Kannst du sehen, wo der Fehler ist?
Angenommen, top.location.hostname ist www.111.com und window.location.hostname ist www.222.com. Das heißt, 111.com einbettet 222.com in seine Webseite ein. Was wird zu diesem Zeitpunkt passieren, wenn Sie top.location.hostname! = Window.location.hostname vergleichen?
Der Browser fordert einen Codefehler auf!
Da sie Cross-Domain sind, erlaubt die Sicherheitsrichtlinie des Browsers keine Webseiten von 222.com, die Webseiten von 111.com zu betreiben und umgekehrt. IE nennt diesen Fehler "keine Berechtigungen". Darüber hinaus erlaubt der Browser nicht einmal, dass Sie Top.location.hostname anzeigen. In Cross-Domänen-Fällen melden Sie einen Fehler direkt, sobald Sie dieses Objekt sehen.
Wie sollte der Code geändert werden?
Tatsächlich fordert uns dies auf, nur zu überprüfen, ob die obere.location.hostname als Fehler gemeldet wird. Wenn ein Fehler gemeldet wird, zeigt er an, dass es eine Kreuzdomäne gibt und das Top-Objekt umgeleitet wird. Wenn ein Fehler gemeldet wird, zeigt dies an, dass es keine Kreuzdomäne gibt (oder das Rahmen nicht verwendet wird), dann wird keine Maßnahmen ergriffen.
try {top.location.hostname;} catch (e) {top.location.href = window.location.href;}Dies ist richtig geschrieben und kann in IE und Firefox korrekt ausgeführt werden. Chrome hat jedoch einen Fehler. Aus irgendeinem Grund meldet Chrome in Cross-Domänen-Situationen keinen Fehler an top.location.hostname!
Es gibt keine Möglichkeit, ich kann nur ein weiteres Stück ergänzender Code für Chrome hinzufügen.
try {top.location.hostname; if (top.location.hostname! }} catch (e) {top.location.href = window.location.href;}OK, der aktualisierte Versionscode ist abgeschlossen. Mit Ausnahme lokaler Domainnamen können keine anderen Domain -Namen Ihre Webseite in das Framework einbetten.
For more information about JavaScript related content, please check out the topics of this site: "Summary of JavaScript Operation Iframe Skills", "Summary of JavaScript Array Operation Skills", "Summary of JavaScript Mathematical Operation Usage", "Summary of JavaScript Data Structure and Algorithm Skills", "Summary of JavaScript Switching Special Effects and Skills", "Summary of JavaScript Search Algorithm Fähigkeiten "," Zusammenfassung von JavaScript -Animation Spezialeffekten und Fähigkeiten "," Zusammenfassung von JavaScript -Fehlern und Debugging -Fähigkeiten "und" Zusammenfassung des JavaScript -Traversal -Algorithmus und der Fähigkeiten "
Ich hoffe, dieser Artikel wird für JavaScript -Programme aller hilfreich sein.