eXma » Diskutieren » Computer und Technik
Startseite - Veranstaltungen - Mitglieder - Suche
Vollständige Version anzeigen: URL eines iFrames auslesen
onkelroman
ich habe eine seite. auf dieser seite befindet sich ein iFrame. in diesem iFrame ist google geöffnet. jetzt klicke ich und surfe ich in diesem iframe herum, gebe zB kid rock ins suchfeld ein, gelange (immernoch in diesem iFrame) auf eine andere seite, klicke da auf irgendwelche links, komme wieder woandershin und so weiter.

der quelltext für das iFrame lautet:
<iframe src="http://www.google.de" width="700" height="400" name="mein_iframe" id="mein_iframe"></iframe>

und irgendwann brauche ich die URL genau dieser seite, die grad im iFrame angezeigt wird.

ich habe das hier mal grob veranschaulicht. zum beispiel soll man nun auf den button klicken und die URL dieses iFrames soll in dem textfeld erscheinen.


wie kann ich das lösen?

mit javascript (document.getElementByID['mein_iframe'].src) geht es nicht, da bekomm ich immer nur den defaultwert (google) zurück. ich habe schon oft gelesen, dass das auslesen eines iframes nicht funktioniert, sobald die angezeigte seite auf einem andern server liegt (vgl. SOP).. aber verdammt, wenn ich mit der rechten maustaste draufklicke --> aktueller frame --> frame-informationen anzeigen .. DANN STEHTS DOCH DA! sehr geheim scheint das also nicht zu sein, jetzt muss ich das nur noch irgendwie automatisieren. dummerweise verzweifel ich soeben, weil ich keine lösung für dieses simple problem finde.

[attachmentid=24089]


hilfe.
chelys
hier wird glaube ich dasselbe Problem diskutiert. Das Problem liegt wohl daran, dass die JS-Funktion nicht aktualisiert wird, wenn sich die Adresse des IFrame ändert. Die haben hier irgendwo eine art timer eingefügt, welcher die JS-Funktionen aktualisiert
sn3ek
vielleicht hilft dir der ansatz weiter...
I.I
Was willst du denn damit? Was willst du überhaupt machen? Eventuell gibts eine andere bessere Lösung. Hast du Zugriff auf die Seiten im IFrame? Also kannst du den Code der Seiten im Iframe ändern oder sind das Fremdseiten (externe Seiten, nicht zu deinem Projekt gehörend)?


Zum IFrame. Ein Iframe ist eine in sich abgeschlossene Subwebseite unabhängig von der aufzurufenden Webseite. Die aufrufende Seite weiß nichts von dem Code der Subwebseite und umgekehrt. Das gleiche gilt fürs Javascript. Der Dombaum der iframe seite wird nicht in den Dombaum der Hauptseite eingefügt sondern die beiden sind voneinander unabhängig. Aus dem Grund kannst du auch per javascript nicht in den Dombaum der Subwebseite eingreifen. Du kommst in deinem Dombaum nur bis zum Iframeobjekt das folgende (lol vollgende ist aber sehr originell) Eigenschaften hat.

http://de.selfhtml.org/javascript/objekte/...ente.htm#iframe

Wenn du im Browser auf Iframeinformationen klickst gibt dir der Browser die Informationen der Subwebseite an wie als wäre es eine normale Webseite. Logisch der Browser kennt ja auch die Informationen von beiden Seiten. Aber wie gesagt kennen sich die Seiten untereinander überhaupt nicht.

Wenn du allerdings Zugriff auf den Code im Iframe hast dann kannst du mit ein paar tricks und kniffen informationen an die aufrufende Seite übergeben. Hab ich selbst schon gemacht und funktioniert super ...

EDIT: vollgende = folgende
onkelroman
@chelys: stimmt, javascript kennt die src nur beim ersten aufruf, und das ist ja immer wieder google. das mit dem timer könnte aber möglicherweise funktionieren.. dann lass ich den das einfach alle 500ms aktualisieren, vielleicht geht das.. das werd ich mal probieren.

@sn3ek: ja, auf der seite war ich auch schon.. und das schnipsel hab ich auch schon getestet. das gibt allerdings "undefined" zurück..

Zitat(I.I @ 05 Apr 2009, 15:23)
vollgende
blink.gif
nein, ich habe keinen zugriff auf den code in dem iframe. zumindest nicht, wenn er nicht auf meinem eigenen server liegt (s.o.), und das wäre bei mir der fall (google, kidrock.com, wikipedia usw).. der browser kennt beide seiten, das muss er auch. vielleicht kann man, wenn einem die parent-seite schon nicht weiterhelfen kann, den browser ja irgendwie abfragen..

dankle für die tips erstmal.. wenn jemand noch ne idee hat: immer her damit! smile.gif
tjay

... es ist einfach nicht möglich ... musst dich wohl damit abfinden.
onkelroman
ja.. ich befüchts auch langsam. mist..
mit dem timer funktioniert das wegen der oben genannten unabhängigkeit auch nicht..