iframe src auslesen
Sebastian Becker
- javascript
Hallo,
ich möchte gerne als Teil eines umfangreicheren Skripts per JavaScript die in einen Iframe geladene Seite auslesen.
So funktioniert es nicht richtig:
<iframe onLoad="alert(this.src)" src="http://www.xyz.de/catalog.htm" name="shop" id="shop"></iframe>
Es wird immer die im Iframe-Tag stehende Adresse (http://www.xyz.de/page1.htm) ausgegeben und nicht die Adresse der Seite, die nach einem Wechsel tatsächlich in den Iframe geladen wurde (z.B. http://www.xyz.de/page2.htm).
Es funktioniert übrigens auch nicht mit getAttribute('src').
Ist das ein Bug oder habe ich einen Fehler gemacht?
Danke für alle sachdienlichen Hinweise ...
Grüße,
Sebastian Becker
Heyho!
Ist das ein Bug oder habe ich einen Fehler gemacht?
Sieht für mich lediglich nach einem Denkfehler aus. Du änders bei einem Seitenwechsel ja nicht das src-Attribut selber. Das bleibt ja im Quellcode immer gleich. Also bleibt bei einem Wechsel deine Ausgabe ebenfalls gleich.
Ich würde es anders machen:
Setz in die geöffnete Seite ein "onLoad=alert(document.URL)" in den Body-Tag. Dann müsste es gehen.
Man könnte auch versuchen, per parent.IframeName.document.URL darauf von außen zuzugreifen. Musst du mal rumprobieren.
Hier gibts mehr: http://de.selfhtml.org/javascript/objekte/document.htm#url
Gruß
Mastershrimp
Hallo, Mastershrimp,
danke für die Antwort.
Sieht für mich lediglich nach einem Denkfehler aus. Du änders bei einem Seitenwechsel ja nicht das src-Attribut selber. Das bleibt ja im Quellcode immer gleich. Also bleibt bei einem Wechsel deine Ausgabe ebenfalls gleich.
Das ist eben die Frage - meines Erachtens ändert sich auch der src. Im Prinzip ist es ja dasselbe wie bei einem MouseOver - da ist auch nicht entscheidend, was im HTML-Tag steht, sondern welches Bild tatsächlich als src geladen wurde ...
Setz in die geöffnete Seite ein "onLoad=alert(document.URL)" in den Body-Tag.
Man könnte auch versuchen, per parent.IframeName.document.URL darauf von außen zuzugreifen. Musst du mal rumprobieren.
Das geht eben nicht, weil es sich nämlich um einen fremdgehosteten Shop handelt ...
Grüße,
Sebastian
Hallo, Mastershrimp,
danke für die Antwort.
Bitte bitte ;)
Das ist eben die Frage - meines Erachtens ändert sich auch der src. Im Prinzip ist es ja dasselbe wie bei einem MouseOver - da ist auch nicht entscheidend, was im HTML-Tag steht, sondern welches Bild tatsächlich als src geladen wurde ...
Hmm. Das wär' n Argument...
*nachdenk*
Allerdings glaube ich, dass das src-Attribut lediglich die Startseite des Iframes angibt (wenn ich das richtig einschätze und interpretiere). "src" sagt nix über den aktuellen Status, sondern nur über die Startseite des Iframes aus.
Ist das Gleiche wie bei einem Formular und dem "value"-Attribut. Wenn man den Wert (also den value) eines Feldes per Eingabe ändert und auf "reset" klickt, wird ja wieder der "value=..."-Wert eingetragen.
Also ich würde abschließend sagen, dass du mit deiner Methode nicht weiter kommst.
Was spricht gegen <iframe onLoad="alert(this.document.URL)"... ?
Probier das mal aus. Evtl. auch ohne "this". Bin etwas aus Javascript raus. Ist was her, seit ich das mal "aktiv" benutzt habe. Bin momentan eher auf dem PHP-Trip und nutze JavaScript nur selten ;)
Gruß
Mastershrimp
Hallo, Mastershrimp,
Allerdings glaube ich, dass das src-Attribut lediglich die Startseite des Iframes angibt (wenn ich das richtig einschätze und interpretiere). "src" sagt nix über den aktuellen Status, sondern nur über die Startseite des Iframes aus.
doch, doch - aber offenbar und sonderbarerweise nur wenn man den src per JavaScript und nicht über einen Link geändert hat ...
Ist das Gleiche wie bei einem Formular und dem "value"-Attribut. Wenn man den Wert (also den value) eines Feldes per Eingabe ändert und auf "reset" klickt, wird ja wieder der "value=..."-Wert eingetragen.
Ja, weil der reset-Button immer auf den Default-Wert zurücksetzt. Wenn Du den value aber mit JavaScript ausliest, wird der aktuelle Wert ausgegeben.
Also ich würde abschließend sagen, dass du mit deiner Methode nicht weiter kommst.
Sehe ich bislang auch so, leider :-( ...
Was spricht gegen <iframe onLoad="alert(this.document.URL)"... ?
Probier das mal aus. Evtl. auch ohne "this".
Das ist ein Widerspruch: entweder "this" oder "document", aber nicht beides. Wenn Du das "this" wegläßt, würde ja theoretisch die URL des Hauptdokuments und nicht des Iframes angezeigt.
Auslesen geht aber offenbar nicht, nur setzen ...
Hier noch mal die gecheckten Möglichkeiten ...
alert(this.src) // geht, aber zeigt Änderungen nicht an
alert(shop.src) // undefined
alert(shop.location.href) // keine Ausgabe
alert(this.location.href) // keine Ausgabe
alert(this.document.url) // undefined
alert(document.url) // undefined
alert(shop.url) // undefined
alert(document.url) // undefined
alert(document.location.href) // zeigt URL des Hauptdokuments
Habe ich was vergessen?
Grüße,
Sebastian
Heyho!
Ja, weil der reset-Button immer auf den Default-Wert zurücksetzt. Wenn Du den value aber mit JavaScript ausliest, wird der aktuelle Wert ausgegeben.
Mhh. Stimmt.
Hier noch mal die gecheckten Möglichkeiten ...
alert(this.src) // geht, aber zeigt Änderungen nicht an
alert(shop.src) // undefined
alert(shop.location.href) // keine Ausgabe
alert(this.location.href) // keine Ausgabe
alert(this.document.url) // undefined
alert(document.url) // undefined
alert(shop.url) // undefined
alert(document.url) // undefined
alert(document.location.href) // zeigt URL des HauptdokumentsHabe ich was vergessen?
Hm. Ich denke nicht.
Dann musst du wohl drauf verzichten...
Oder warte mal ab, ob sich einer der Profis hier noch zu meldet.
Tut mir leid, dass ich nich weiterhelfen konnte.
Gruß
Mastershrimp
Ergänzung:
Man kann den geänderten src anscheinend nur auslesen, wenn man ihn vorher mit JavaScript geändert hat.
so geht's ...
onLoad="this.src='http://www.google.de';alert(this.src);"
so wird zwar der Inhalt geändert, aber das alert nicht getriggert ...
onLoad="shop.location.href='http://www.google.de';alert(shop.location.href);"
Sebastian