Stefan Kremer: top.frames[x].name klappt nur halb

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!

  1. 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

    --
    Am Ende wird alles gut.
  2. 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

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. 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!

    1. 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

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. 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

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  4. 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

    --
    Heutzutage gilt ein Mann schon dann als Gentleman, wenn er wenigstens die Zigarette aus dem Mund nimmt, bevor er eine Frau küsst.
      (Barbra Streisand, US-Schauspielerin)