Einführung

FrameCommunicator ist ein kleines Script, das die Kompatibilität von IFrames verbessern soll. Zum Beispiel ist es oft hilfreich, zu wissen, wie hoch der Inhalt des Frames ist, oder wie die genaue URL der Seite im Frame lautet. Wenn diese Seite aber von einem anderen Server kommt, oder sogar nur von einer anderen Subdomain, dann kann man aus Sicherheitsgründen nicht auf die Seite im Frame zugreifen.

FrameCommunicator.js stellt nun zwei Klassen (FrameCommunicator und FrameAPI) zur Verfügung, die per PostMessage ausgewählte Informationen zwischen den Seiten austauschen. FrameCommunicator kann für einen Iframe erstellt werden und horcht auf dessen Messages. Es kann auch automatisch die Höhe und Breite einstellen, falls autoHeight/autoWidth auf true gesetzt wird. FrameAPI kümmert sich um das Ermitteln und Senden der Informationen. frameCommunicator.js erstellt automatisch eine Instanz von FrameAPI für die Seite, die dieses Script importiert, und speichert diese in der globalen Variablen fapi. Standardgemäß überträgt diese Instanz die Höhe des Frameinhaltes, das MouseDown-Event (Aber ohne Koordinaten) und beim Laden der Seite eine Information, dass genau das übertragen wird.
Falls die Frame-Seite von der gleichen Domain kommt, wird die FrameCommunicator-Instanz, die für diesen Frame erstellt wurde, automatisch eine Instanz von FrameAPI im Scope (Window-Objekt) der Frame-Seite erzeugen, auch, wenn diese nicht frameCommunicator.js importiert. Diese automatische Ergänzung funktioniert aber erst nach dem onload der FrameSeite. Es ist daher trotzdem hilfreich, das Script im Header der Frame-Seite zu importieren, da dann der Status bereits während des Ladens gesendet wird und nicht erst nach onload. So kann die parent-Seite schon früher erkennen, dass eine neue Seite im Frame geladen wird.

Beachten Sie: Es ist rechtlich nicht erlaubt, beliebige, fremde Seiten ohne Erlaubnis als IFrame innerhalb der eigenen Seite anzeigen zu lassen. FrameCommunicator dient in erster Linie zur verbesserten Einbindung von eigenen Inhalten, die aber auf einer anderen Subdomain oder einem anderen Server liegen.

Beachten Sie außerdem: Alle Informationen, die von fremden Domains gepostet werden, können auch falsch sein. Eine fremde Seite kann zum Beispiel signalisieren, dass sie MouseDowns sendet, dies aber nicht tun, oder einfach ununterbrochen MouseDown-Ereignisse senden. Generell sollten Sie keine fremden Seiten, denen Sie nicht vertrauen, in einen IFrame laden, aber achten Sie trotzdem darauf, dass ein schlechtes/bösartiges Verhalten der Frame-Seite in Ihren Codes nicht mehr als eine unkomfortable Bedienung zur Folge haben kann.