david87hd: parent.location.href: Erlaubnis verweigert

Hallo,

ich habe Seite 1, die auf Server A liegt. Eine andere Seite 2 bindet diese von Server B aus in ihr Frameset ein. Beim Aufrufen meiner Seite (1) soll geprüft werden, ob die Seite in dem Frameset, welches in der URL den String XYZ enthält, geladen wurde.

Das ganze sah dann so aus:
 url = parent.location.href;
 if (url.indexOf("XYZ") > -1) {...}

Ich habe die Seite 1 auf meinem Apache zu Hause liegen. Eine HTML-Datei mit Frameset (Seite 2) habe ich aus meinem Dateisystem normal aufgerufen.
Die Seite lädt sich in dem Frame, es kommt aber zu folgender Meldung (unter MSIE): Erlaubnis verweigert.
Zeilen- und Zeichenangaben verweisen auf parent.location.href

Meine Frage nun: Wie kann ich sonst prüfen, ob die Seite in dem Frameset geladen werden wird? Es soll nämlich eine andere CSS-Datei eingebunden werden.

Tscho, david87hd

  1. hallo,

    Ich habe die Seite 1 auf meinem Apache zu Hause liegen. Eine HTML-Datei mit Frameset (Seite 2) habe ich aus meinem Dateisystem normal aufgerufen.

    Hm. Leider kenne ich dein Dateisystem nicht und weiß auch nicht, was du unter "normal" verstehst.

    Die Seite lädt sich in dem Frame, es kommt aber zu folgender Meldung (unter MSIE): Erlaubnis verweigert.

    Das bedeutet das Gegenteil: die Seite wird eben nicht in den Rahmen geladen. Der Grund ist einfach: dein lokaler Apache kennt sie nicht und hat keinen Zugriff. Sie liegt also keineswegs "auf" deinem Apache, sondern irgendwo völlig außerhalb seiner Reichweite.

    Meine Frage nun: Wie kann ich sonst prüfen, ob die Seite in dem Frameset geladen werden wird?

    Nicht nötig. Dir wird eindeutig mitgeteilt, daß die Seite eben nicht geladen wurde, das reicht doch.

    Grüße aus Berlin

    Christoph S.

    1. äähmm...
      Wollte grad ne Antwort drauf schreiben und dabei fällt mir ein:
      Stimmt ja, was du sagst.

      Die Seite lädt sich in dem Frame, es kommt aber zu folgender Meldung (unter MSIE): Erlaubnis verweigert.

      Das bedeutet das Gegenteil: die Seite wird eben nicht in den Rahmen geladen. Der Grund ist einfach: dein lokaler Apache kennt sie nicht und hat keinen Zugriff. Sie liegt also keineswegs "auf" deinem Apache, sondern irgendwo völlig außerhalb seiner Reichweite.

      Is ja wahr... :)

  2. n'Abend!

    ich habe Seite 1, die [...]

    Das ganze sah dann so aus:
    url = parent.location.href;
    if (url.indexOf("XYZ") > -1) {...}

    Nach der komplizierten Beschreibung jetzt eine ganz einfache Erkenntnis:
    Ein Javascript darf (kann) nicht auf Ressourcen zugreifen, die von einer anderen Domain stammen ("same origin policy"). Du kannst zwar einem Frame mit der Anweisung framename.location.href=url sagen, dass er eine neue Seite von werweißwo laden soll. Sobald diese Seite aber geladen ist, hast du mit Javascript keinen Zugriff mehr auf diesen Frame. Genau dann kommt beim IE die Fehlermeldung "Zugriff verweigert", die du ja bekommst.

    So long,

    Martin

    --
    Es gibt Tage, an denen einem einfach alles gelingt.
    Doch das ist kein Grund zur Sorge: Das geht schnell vorbei.
  3. Hi david87hd,

    es kommt aber zu folgender Meldung (unter MSIE): Erlaubnis verweigert.
    Zeilen- und Zeichenangaben verweisen auf parent.location.href

    ohne es ausprobiert zu haben: vielleicht "frames.parent.location.href" ?

    Gruß, Marian

    1. hallo Marian,

      ohne es ausprobiert zu haben: vielleicht "frames.parent.location.href" ?

      Du hättest es mal lieber ausprobieren sollen  -  oder die entsprechenden Erläuterungen in SELFHTML nachlesen sollen.

      Grüße aus Berlin

      Christoph S.