top.frames[x].name klappt nur halb
Stefan Kremer
- javascript
1 Joachim1 wahsaga1 Stefan Kremer1 Der Martin
Hi,
ich möchte eine html-Datei auf zwei verschiedenen Webseiten anzeigen lassen. Auf beiden Seiten existiert jeweils ein Frameset mit zwei Frames, links ein Navigationsframe und rechts der Hauptframe, in dem die html-Datei angezeigt werden soll. Beide Webseiten haben ein anderes Layout (Hintergrundgrafik etc.), was durch css definiert ist. Nun möchte ich, dass beim Aufruf der html-Datei von der Webseite A die Layoutdefinitionen der Seite A und beim Aufruf in Webseite B die Definitionen von B geladen werden. Wie kann ich das machen?
Mein bisheriger Ansatz war, per Javascript top.frames[0].name zu ermitteln, denn der Nativationsframe heisst bei der einen Seite "framel" und bei der anderen "Inhalt" und ist jeweils der erste im Frameset definierte. Leider klappt das nicht. Ich kann nur mit top.frames[1].name den Namen des Hauptframe auslesen.
Kann ich vielleicht mit einem Befehl herausbekommen, von welcher Seite aus die html-Datei aufgerufen wurde? Das würde mir schon sehr helfen!
Hi,
Kann ich vielleicht mit einem Befehl herausbekommen, von welcher Seite aus die html-Datei aufgerufen wurde?
Du weisst, das domainübergreifendes Javascript nicht möglich ist? Stichwort "same origin policy"
Gruesse, Joachim
hi,
Mein bisheriger Ansatz war, per Javascript top.frames[0].name zu ermitteln, denn der Nativationsframe heisst bei der einen Seite "framel" und bei der anderen "Inhalt" und ist jeweils der erste im Frameset definierte. Leider klappt das nicht. Ich kann nur mit top.frames[1].name den Namen des Hauptframe auslesen.
Da macht dir vermutlich die Same Origin Policy einen Strich durch die Rechnung.
Kann ich vielleicht mit einem Befehl herausbekommen, von welcher Seite aus die html-Datei aufgerufen wurde?
Gebe der Seite die Info explizit bei ihrer Einbindung mit, im Querystring - und lese die Information dann von dort über location.search aus.
gruß,
wahsaga
Nun habe ich weiterecherchiert und bin über document.referrer gestolpert (warum hab ich das vorher nicht gefunden!?).
Damit kann ich den Namen der aufrufenden html-Seite ermitteln, und die kann ich mit
if (document.referrer == "http://www.webseite1.de/test.htm") {
}
abfragen :) Problem gelöst!
hi,
Nun habe ich weiterecherchiert und bin über document.referrer gestolpert (warum hab ich das vorher nicht gefunden!?).
Damit kann ich den Namen der aufrufenden html-Seite ermitteln
Nein, das kannst du nur unter besonderen Umständen - nämlich, wenn der Nutzer seinem Browser auch erlaubt, diese Information weiterzugeben.
Problem gelöst!
Vermeintlich.
Mein Vorschlag dürfte eine sicherere Möglichkeit sein.
gruß,
wahsaga
Hi,
Nein, das kannst du nur unter besonderen Umständen - nämlich, wenn der Nutzer seinem Browser auch erlaubt, diese Information weiterzugeben.
Allerdings ist es mit Frames auch leicht möglich festzustellen, ob der Referrer prinzipiell manipuliert wird oder nicht.
Gruß, Cybaer
Hallo,
ich möchte eine html-Datei auf zwei verschiedenen Webseiten anzeigen lassen. Auf beiden Seiten existiert jeweils ein Frameset mit zwei Frames, links ein Navigationsframe und rechts der Hauptframe, in dem die html-Datei angezeigt werden soll. Beide Webseiten haben ein anderes Layout (Hintergrundgrafik etc.), was durch css definiert ist. Nun möchte ich, dass beim Aufruf der html-Datei von der Webseite A die Layoutdefinitionen der Seite A und beim Aufruf in Webseite B die Definitionen von B geladen werden. Wie kann ich das machen?
wahrscheinlich viel einfacher, als du momentan denkst.
Warum nicht einfach auf beiden Web-Präsenzen eine unterschiedliche CSS-Ressource mit dem gleichen Namen hinterlegen, und im HTML quasi-statisch einbinden? Dann wäre die ganze Dynamik mit Javascript oder anderen Kanonen überflüssig.
So long,
Martin