Neues vom FrameBreaker (Frame mit javaScript entfernen)
Meine Künstler-Homepage ist Bilder-lastig. Vor vier Monaten habe ich dort einen Test gestartet. Ich habe bei einem Bild ein Framebreaker JavaScript in den HTML-Quellcode implementiert. Dieser Code-Schnipsel bewirkt folgendes: Wenn die Seite in einem Frameset geladen wird, lädt sich die Seite automatisch ohne Frames neu. Warum das? Wann wird die Seite überhaupt in einem Frameset geladen?
Es gab zwei grundsätzliche Arten, wann Seiten von mir in einem Frameset geladen wurden. Zum einen gab es tatsächlich Seitenbetreiber, die meine komplette Site „geklaut“ hatten. Das sah so aus: in einem zweizeiligen Frameset wurde unten meine HTML-Seite gezeigt. Leider war jedoch im oberen Frame schmutzige Werbung eingeblendet. Diese Fälle liegen zeitlich allerdings schon eine ganze Weile zurück. Der zweite Fall ist wesentlich relevanter und subtiler, und er betrifft Millionen von Seiten: Verursacher ist google selber.
Immer, wenn ein Bild in der google Bildersuche geklickt wird, öffnet sich ein Frameset. Im oberen Frame liegen Google-Navigationselemente, im unteren Frame ist die eigentliche Ergebnisseite zu sehen. Nach meinem Dafürhalten ist das nicht in Ordnung. Der Sinn dieses Frameset ist eigentlich nur, die Besucher bei der google-Bildersuche zu halten. Google „klaut“ also eigentlich traffic und Aufmerksamkeit. Als egoistischer und eingebildeter Künstler kann ich das natürlich nicht akzeptieren.
Das FrameBreaker-JavaScript
Der Weg, diesen Google-Bildersuche-Frame zu umgehen, ist eben das Framebreaker-JavaScript. Dieser kleine Code-Schipsel sieht so aus:
<script language=”JavaScript” type=”text/javascript”>
if ( top.location != self.location ) { top.location = self.location; }
</script>
Zur Erläuterung: Per JavaScript wird geprüft, ob die Seite mit dem JavaScript (SELF) mit dem „übergeordneten“ Frame (TOP) übereinstimmt. Falls nicht ( != ), dann wird der TOP-Frame komplett mit dem Self-Frame gefüllt. Kurz: Wenn die Seite mit dem FrameBreaker-Script in einem Frameset geladen wird, lädt sie sich automatisch neu, aber ohne Frameset.
Sogut, soweit. Hier ein Beispiel, wie das Ganze in Live funktioniert: „F1“ bei images.google.de suchen. -> Klick aufs Bild (links) öffnet die Seite und schießt den Frame ab. Ganz simpel. Leider hatte ich seinerzeit Sorge, dass Google diesen FrameBreaker als „direkten Angriff“ ansieht. Immerhin „klaue“ ich mir ja von Google die Besucher zurück. Ich habe daher am 13. Dezember 2008 einen Test mit einem Bild gestartet. Als dann bis Mitte Januar nichts auffälliges mit dem Bild und der Seite geschah, habe ich die gesamte Site umgestellt. Der Besucherzahlen haben sich seit dem FrameBreaker-Einsatz mehr als verdoppelt. Das liegt an folgendem: die Mehrzahl der Site-Besucher kommen über die Bildersuche. Ohne den „aufdringlichen“ Google-Frame oben bleiben einfach viel mehr Besucher auf der Seite, wenn sie schon mal da sind. Das Frameset verleitet geradezu zum schnellen, oberflächlichen Hin-weg-sehen.
Was gibt es denn nun Neues?
Nun, zunächst kann ich vermelden, dass sich bis heute, vier Monate später, noch keine „Bestrafung“ oder „Verbannung“ der Bilder oder der Seiten stattgefunden hat. Im Gegenteil: die Bilder ranken immer besser, was aber vermutlich nicht am Framebreaker, sondern an der Qualität der Bilder der Bild-Optimierung liegt.
Neu ist darüber hinaus, dass immer mehr Seiten den Framebreaker einsetzen. Prominentestes Beispiel ist sicherlich spiegel.de (zum Testen einfach mal „Spiegel Politik“ googeln und auf das erste Bild von Spiegel.de klicken). Aber auch viele andere Seiten haben mittlerweile ein FrameBreaker-Script im Quellcode. Insbesondere solche, die große Bildergalerien anbieten (Postershops etc).
Neu ist auch, dass ich nun eine bessere „Implementierungsmethode“ gefunden habe. Das geht so:
Wo wird der JavaScript-Code am besten eingefügt?
Der einzige, aber tatsächliche Nachteil des Framebreakers war, dass der „Zurück-Button“ des Browsers nicht mehr richtig funktionierte. Ich hatte damals den FrameBreaker-Schnipsel in den Header der Seite eingebaut. Die Seite wurde also sehr schnell reloaded – man konnte gar nicht so schnell auf Zurück klicken, um den Wiederaufruf zu überwinden. Die Lösung ist simpel: Inzwischen habe ich den FrameBreaker in den Footer der HTML-Seite gelegt. Dadurch wird die Seite – und insbesondere das Bild, erst geladen, bevor die Frame-Abfrage kommt. So entsteht eine größere Zeitspanne, und der zweifache Klick auf den „Zurück-Button“ funktioniert reibungslos. Ein wichtiger Punkt in Sachen Usability: das Zurückkehren in die Bildersuche wird dadurch vereinfacht.
Wer google-Analytics (oder ein anderes Tracking-Script) nutzt, sollte allerdings darauf achten, den Framebreaker-Code vor den Tracking-Code zu setzen. Ansonsten würden die Aufrufe doppelt gezählt (glaube ich zumindest ;-) )
Falls jemand Schlechtes oder Nachteiliges über das FrameBreaker-Script zu berichten weiß, bitte kommentieren. Ansonsten kann ich den Einsatz nur empfehlen. Mit dem klaren Hinweis: Bis jetzt hat es bei mir keine Abstrafung gegeben. Aber das heißt natürlich nicht, dass das nicht noch kommen kann. Ein Restrisiko bleibt, solange sich google nicht explizit zu der Frage geäußert hat. Aber das wird man dort tunlichst unterlassen – denn sonst könnte man das blöde Bildersuche-Frameset sowieso gleich abschaffen…
[Update 21.04.2009] Gerade entdeckt: der Tagesspiegel benutzt nun auch den FrameBreaker.
10 Gedanken zu „Neues vom FrameBreaker (Frame mit javaScript entfernen)“
Hallo,
leider habe ich nichts zu dem FrameBreaker, sonder zu deinem F1-Bild zu sagen.
Bei weitem die beste Idee, die ich je im Zusammenhang mit Speedpainting gesehen hab.
Gibt es dazu ein Speedpaintingvideo, wie das Bild auf der Leinwand des Malers entsteht? ;)
Beide Daumen hoch(!!!) und liebe Grüße!
Hi Cherno,
hehe, vielen Dank. Ich seh schon: Dieser Blog wird langsam wieder in die Kunst-Ecke getrieben ;-)
Wenn Du das Bild oben anklickst, kommst Du auf die Seite, wo das Speedpainting-Video dazu läuft (dort etwas nach unten scrollen).
Gruß, Martin
Zum Framebreaker:
Die Funktion des back-buttons (JavaScript: history und back) lässt sich gut erhalten, wenn top.location.replace benutzt wird. JavaScript ersetzt dadurch den Eintrag der history, statt einen anzuhängen. Code:
if (self != top) { top.location.replace(self.location.href); }
Grüße, Thomas
Hi Thomas,
vielen Dank für den Tipp. Stimmt, aber: Ich bin da noch am Testen. Nachteil ist nämlich: wenn im Firefox „Firebug“ aktiviert ist (was bei mir default-mäßig eingestellt war), dann gibt es eine Zugriffsfehlermeldung – und der Frame bleibt bestehen.
Aber ich werde das bei Gelegenheit noch mal durchtesten und dann hier vorstellen.
Danke nochmal, Martin
So, habs noch mal geprüft. War wohl ein Testfehler meinerseits: das o.g. Script von Thomas scheint gut zu laufen.
Ich lasse es jetzt mal ein paar Tage durchlaufen, bevor ich es dann in einem Post vorstelle…
Hi Martin,
sehr aufschlussreich, danke :)
Wie sieht das mit den Ladezeiten während des „Framebreaking-Vorgangs“ aus? Ich hatte im Fotoblog auch einen Framebreaker eingebaut.
Allerdings gleich an den Anfang des Quellcodes, da ich die Erfahrung mache, dass viele Leute direkt auf das Thumb im Frame bei der Google Bildersuche klicken. Dieses wird sehr schnell geladen, bevor Dein Framebreaker wirken kann.. Dann hast Du nur jemandem auf Deinem Bild, nicht auf Deiner Seite?
Ich kann nur sagen: Finger weg! Siehe http://www.seokai.com/bilder-seo-kein-traffic-mehr-fur-framebreaker/
Kommentare sind geschlossen.