if (top.location!= self.location) {
top.location = self.location.href;
}
Das wird generell funktionieren, aber es gibt eine geringe Ausfallwahrscheinlichkeit, falls window überschrieben wird. Hier sind ein paar clevere Alternativen von Nathan Smith
<script>
// Break out of an iframe, if someone shoves your site
// into one of those silly top-bar URL shortener things.
//
// Passing `this` and re-aliasing as `window` ensures
// that the window object hasn't been overwritten.
//
// Example:
// var window = 'haha, punked!';
//
// Note: Probably unnecessary, but just for kicks.
(function(window) {
if (window.location !== window.top.location) {
window.top.location = window.location;
}
})(this);
</script>
<script>
// A more cryptic one-liner, to awe & impress.
//
// No need to protect `window` since `this` is
// immutable, and at the topmost level means
// `window` anyways. Here, we compare locations
// on the left side of the "&&" and execute the
// code in parenthesis if that condition is
// true (top location isn't iframe location).
//
// Otherwise, nothing happens. It's basically an
// if statement without wrapping curly brackets.
//
// Weird, I know. But pretty cool, right? :)
this.top.location !== this.location && (this.top.location = this.location);
</script>
Gibt es eine Möglichkeit, dies zu verhindern? Von der übergeordneten Seite.
vielleicht, wenn Sie versuchen, das übergeordnete window.top zu versenden, da es nur von HTMLIFrameElement verwendet wird
bitte, Beispiele für Blogs, die einen iFrame verwenden
Kann dies auf WordPress nicht zum Laufen bringen
Es gibt ein Plugin für WordPress > http://wordpress.org/plugins/wp-framebreaker/
Wird dies dazu führen, dass zwei Besuche registriert werden, wenn ich Google Analytics zur Verfolgung verwende?
Wenn ja, gibt es eine alternative Methode, die das Ausbrechen ermöglicht, aber keine zwei Besuche registriert?
Dies funktioniert nicht garantiert – das Setzen von window.top.location kann umgangen werden (http://en.wikipedia.org/wiki/Framekiller#Framekiller_killers). Stattdessen sollten Sie die Option verwenden, die direkt über diesem Wikipedia-Abschnitt beschrieben ist – nur sichtbar, wenn erkannt wird, dass Sie sich nicht in einem iFrame befinden.
Sollte Ihr erster Schnipsel nicht?
Als ich es ohne den 'href'-Teil versuchte, führte dies zu einer Weiterleitung, anstatt nur aus dem iFrame auszubrechen.
Entschuldigung, ignorieren Sie meinen letzten Kommentar. Es sieht so aus, als ob es auch mit dem hinzugefügten „.href“ einen Neustart gibt. Ich bin mir nicht sicher, warum es beim ersten Versuch ohne den „.href“ zu einem Neustart kam! Ich hätte ein bisschen mehr testen sollen, bevor ich meinen letzten Beitrag gepostet habe! Schade, dass die Seite neu geladen werden muss. Danke für die Info.
@Miro, du hast eigentlich nicht Recht. Diese Studie ist fehlerhaft. Siehe meine Wikipedia-Edits dazu: https://en.wikipedia.org/wiki/Framekiller
Die hier vorgestellte Lösung ist die beste Option, um Frames zu beenden.
Neu mit html5
iframe sandbox=”allow-same-origin”
Erlaubt, dass der iFrame-Inhalt als vom selben Ursprung behandelt wird
Das hat bei mir gut funktioniert, mal sehen, wie lange.
Ich weiß, dass dieser Beitrag alt ist, aber ich habe es versucht und es hat sehr gut funktioniert. Das Problem ist, dass, wenn ich „Visual Composer“ (einen visuellen Builder für WordPress) verwende, er mich zum Beitrag weiterleitet und ich Visual Composer nicht verwenden kann.
Irgendwelche Ideen, wie man es verhindern kann, wenn es sich um dieselbe Domain handelt?
Danke!
Leider funktioniert dies nicht mit WP Customizer und entfernt/leitet es auch um.
Wow. Das ist großartig!
Ich hatte Schwierigkeiten, meine Seite gut aussehen zu lassen, aber die Weiterleitung zur Anmeldeseite war ein Problem, da die Anmeldeseite alles verzerrte. Die Einzeiler-Lösung ist großartig.