Workaround zum top.document-Problem

JavaUncle

Mitglied
Hallo

Jeder kennt das: Benutzt man Frames, so kann man mit JavaScript keine schönen Overlays mehr erzeugen, welche über mehrere Frames hinweg gehen. Kein schönes Drag & Drop, keine Ausblendung das Viewports wie bei der Lightbox, und auch sonst keine coolen Effekte die den ganzen Viewport betreffen und über Framegrenzen hinweg flüssig ablaufen müssen.

Es gibt nur eine einzige Lösung: Die Website in einem 100% großem Iframe unterbringen, so wie sie ist. Die DIV-Container für die Overlays werden in dem Dokument welches das Iframe definiert ausgegeben. So sind diese DIV-Container in der Lage mehrere Frames zu überlagern, also unabhängig von Frames, Framegrenzen usw.

Eigentlich ganz einfach. Wenn da nicht die Eigenschaft top wäre, mit der man aus dem Frame-Jungle hindurch immer das oberste Dokument erreicht, also die Wurzel von allem. Durch das vorgeschaltete Dokument mit dem Iframe verweisen nun alle top.document.irgendwas() Aufrufe auf das falsche Dokument!

Möglichkeit 1: Alle JavaScripte anpassen! Schlechte Möglichkeit, wenn man will, das andere das Script einsetzen.

Möglichkeit 2: Irgendwie dafür sorgen, das ein Aufruf nach dem Muster top.document.irgenwdas() das RICHTIGE Dokument erreicht. Nämlich das zweite. Das, was im Iframe steht!

mit prototype gelingt es nicht die top-Eigenschaft zu manipulieren. Wäre auch zu einfach.

Gibt es irgend eine Möglichkeit per JavaScript Anfragen an Dokument A automatisch an Dokument B zu delegieren?

Angenommen jemand ruft mit top.document.getElementById('divcontainer') einen DIV-Container ab. top.document.... verweist auf Dokument A, das ist FALSCH. Dokument B ist das ursprünglich gedachte Ziel, denn wir erinnern uns: A ist das Dokument mit dem Iframe, das nachträglich hinzu kam, um schöne Effekte trotz Frameset zu ermöglichen.

In Dokument A existiert der DIv-Container mit der id "divcontainer" nicht. In B aber schon!

Frage: Ist es irgendwie möglich jedwede Anfrage an A auf B zu routen, zu mappen oder was auch immer?

Frage: Gibt es vielleicht noch eine andere schlaue Möglichkeit dieses Problem mit den Frames zu lösen, ohne das ein NEUES Dokument hinzu kommt und damit die "Systemintegrität" behindert? Kann man vielleicht ein Iframe in ein *bestehendes* Dokument mit Frameset-Definition unterbringen, so dass das Frameset nun innerhalb des Iframes angezeigt wird?

bin für jeden sachdienlichen Hinweis dankbar.

JavaUncle
 

Neue Beiträge

Zurück