Mathias: URL aus Inframe auslesen bei externen Server?

Hallo

Mal eine Frage an die Spezialisten.
Ich habe eine Seite mit einem Inframe in das externe Seiten geladen werden können. Jetzt möchte ich einen Link auf der Seite haben der bei betätigung die aktuelle URL aus dem Inframe ausliest und als Adresse für das gesammte Fenster setzt. Also die Seite aus dem Inframe befreit. Dazu habe ich versucht Javascript zu nutzen:

[quote]
var adresse=top.imFrame.location.href;
// Oder alternativ hatte ich:
//    var adresse=top.imFrame.document.URL;

top.location.href=adresse;
[/quote]

Das Problem ist nur das meine Version nur funktioniert wenn die Seite im Inframe auf dem gleichen Server liegt wie die umgebende Seite selber. Scheint am Javascript Sicherheitsmodell zu liegen.
Kennt jemand eine Möglichkeit trotzdem an die URL des Inframes zu kommen? Ich will ja keine Forms aulesen.

  1. Hallo,

    also erstmal: es gibt in (X)HTML keinen inFrame, nur iframe.

    Zum Problem: Wenn ich das jetzt richtig verstanden habe, dann liegt ein Problem darin, dass du die Adresse nicht in die Adresszeile schreiben kannst.
    Erstmal: auf die Seite, die im iframe angezeigt wird, kannst du ganz bequem per:

    var ziel = document.getElementsByTagName("iframe")[0].src;

    zugreifen. Damit hast du auf jeden Fall die Adresse. Probier es doch mal mit einem ganz normalen:
    location.href = ziel;

    Damit wird derjenige, der sich die Seite anguckt, sofort auf die Adresse im iframe weitergeleitet.

    Gruß,
    Morten

    1. Hallo Morten

      also erstmal: es gibt in (X)HTML keinen inFrame, nur iframe.

      Ich weis. 'inFrame' ist nur ein Name/ID :
      <iframe id="imFrame" name="imFrame" src="">

      Zum Problem: Wenn ich das jetzt richtig verstanden habe, dann liegt ein Problem darin, dass du die Adresse nicht in die Adresszeile schreiben kannst.

      Nein das eigentliche Problem ist es die aktuelle Adresse eines Iframe 'auszulesen' und zwar von außerhalb des Iframes.
      Mein Code funktioniert nur dann wenn der Inhalt des Iframes eine Seite ist die auf dem selben Server liegt. Sobald im Iframe eine andere Seite angezeigt wird kann ich die URL des Iframes nicht mehr auslesen.

      Erstmal: auf die Seite, die im iframe angezeigt wird, kannst du ganz bequem per:
      var ziel = document.getElementsByTagName("iframe")[0].src;
      zugreifen. Damit hast du auf jeden Fall die Adresse. Probier es doch mal mit einem ganz normalen:
      location.href = ziel;

      Das Weiterleiten mit location.href=ziel stellt ja kein Problem dar. Die Variante mit getElementsByTagName habe ich ausprobiert, funktioniert aber auch nicht. Da es anscheinend eine Beschränkung seitens eines Javascript Sicherheitskonzeptes gibt was verhindern will das ich Daten zB aus Formularen auslesen kann.

      Prinzipell versuche ich folgendes:
      A>Wie lautet die Adresse des Iframe?
      B>Leite die gesammte (parent) Seite auf diese Adresse um!
      Dabei ist schon klar wie B in javascript funktioniert. A ist das Problem. Oder eine Methode die A und B zusammenfasst.

      Vieleicht kennt wer einen Trick.

      Gruß Mathias

      1. Hallo Morten

        also erstmal: es gibt in (X)HTML keinen inFrame, nur iframe.

        Ich weis. 'inFrame' ist nur ein Name/ID :
        <iframe id="imFrame" name="imFrame" src="">

        Zum Problem: Wenn ich das jetzt richtig verstanden habe, dann liegt ein Problem darin, dass du die Adresse nicht in die Adresszeile schreiben kannst.

        Nein das eigentliche Problem ist es die aktuelle Adresse eines Iframe 'auszulesen' und zwar von außerhalb des Iframes.
        Mein Code funktioniert nur dann wenn der Inhalt des Iframes eine Seite ist die auf dem selben Server liegt. Sobald im Iframe eine andere Seite angezeigt wird kann ich die URL des Iframes nicht mehr auslesen.

        Das Weiterleiten mit location.href=ziel stellt ja kein Problem dar. Die Variante mit getElementsByTagName habe ich ausprobiert, funktioniert aber auch nicht. Da es anscheinend eine Beschränkung seitens eines Javascript Sicherheitskonzeptes gibt was verhindern  will das ich Daten zB aus Formularen auslesen kann.

        Bei mir funktionieren die drei von der W3C bereitgestellten Varianten, um mittels JavaScript auf HTML-Elemente zuzugreifen, tadellos. Du hast es vermutlich auch schon mit getElementById und getElementsByName versucht? Wenn keins davon geht, dann weiß ich auch nicht weiter.

        Besorge dir am besten die Web Developer Tools für den Firefox (einfach genanntes bei Google eingeben). Darin ist eine JavaScript-Konsole inbegriffen, die dich auf Fehler hinweist.

        Ich habe nun im HTML-Dokument folgendes gespeichert:
        <iframe id="iframe" src="www.example.com" onload="leite_weiter();">
        Wenn ich im Internet-Explorer mittels
        function leite_weiter() {
         var ziel = document.all('iframe').src;
         location.href = ziel;
        }
        weiterleite funktioniert das tadellos.

        Und im Firefox mittels:
        function leite_weiter() {
         var ziel = document.getElementById('iframe').src;
         location.href = ziel;
        }
        auch. :)

        Ich denke, wenn du es so machst, sollte es funktionieren :)

        Gruß,
        Morten

        1. Hallo allesammt

          Vielen Dank für eure antworten. Auch wenn es nicht funktioniert.
          Gruß Mathias

      2. Hi,

        Da es anscheinend eine Beschränkung seitens eines Javascript Sicherheitskonzeptes gibt was verhindern will das ich Daten zB aus Formularen auslesen kann.

        So ist es - d.h., Du hast generell keinen Zugriff mit JS auf jedwede fremden Resourcen (oder Teilen davon). Damit hat sich deine Frage/Problem, mangels Möglichkeit, auch erledigt ...

        Vieleicht kennt wer einen Trick.

        Umweg über serverseitige Technik.

        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"!
      3. Nein das eigentliche Problem ist es die aktuelle Adresse eines Iframe 'auszulesen' und zwar von außerhalb des Iframes.
        Mein Code funktioniert nur dann wenn der Inhalt des Iframes eine Seite ist die auf dem selben Server liegt. Sobald im Iframe eine andere Seite angezeigt wird kann ich die URL des Iframes nicht mehr auslesen.

        Das geht nicht http://en.wikipedia.org/wiki/Same_origin_policy

        Struppi.

        --
        Javascript ist toll (Perl auch!)