rekursive Schleife
J.Kleineist
- javascript
Hallo,
nachdem ich mich mit dem iframe im iframe so verrannt habe bekomme ich im Augenblick keinen klaren Geanken hin.
Ich suche nunmehr einen Schleifenalgorithmus mit dem ich alle iframe-Namen (.src) einsammeln kann.Anzahl der Elemente,tiefe der Ebenen sind nicht bekannt.
Muster: iframe | | | iframe iframe iframe_______ | | | | | iframe iframe iframe iframe iframe | | | iframe iframe iframe
usw. usw. (bitte keine Diskussionen über den Sinn von iframes, es könnte auch jedes andere Element sein)
Gruß J.Kleineist
Hi,
rekursiv absteigend, indem du die Verarbeitung in eine Prozedur/Funktion/Methode kapselst, die als Eingabeparameter die aktuelle IFRAME-Quelle (src) bekommt, diese dann auf Vorkommen von IFRAME checkt für jedes Vorkommen erstmal sich selber aufruft (also absteigt) und dann (nach der Rückkehr aus der Funktion) die Nutzdaten auf irgendeine von dir gewünschte Variante verarbeitet.
Hoffe, das hilft als Denkanstoß :)
Frank
hi,
Ich suche nunmehr einen Schleifenalgorithmus mit dem ich alle iframe-Namen (.src) einsammeln kann.
zugriff auf die iframes würde ich über
document.getElementsByTagName("iframe")
versuchen (und diese collection dann per schleife durchlaufen).
und auf der nächsten ebene ersetzt du document dann halt durch die referenz auf das document im iframe.
function rekursiere_ueber_iframes(welches_dokument) {
var iframes = welches_dokument.getElementsByTagName("iframe");
for(einIframe in iframes) {
var scrInhalt = einIframe.src;
rekursiere_ueber_iframes(einIframe.document);
}
}
rekursiere_ueber_iframes(document);
ungetestet; nur grobe idee.
setzt natürlich (mindestens) voraus, dass alle dokumente fertig geladen sind, und das die same origin policy nicht verletzt wird.
gruß,
wahsaga
Hallo wahsaga,
zugriff auf die iframes würde ich über
document.getElementsByTagName("iframe")
Bei Frames bietet sich ja auch die Frames-Collection an, die auf auch Iframes anwendbar ist.
Gruß Gernot
hi,
Ich suche nunmehr einen Schleifenalgorithmus mit dem ich alle iframe-Namen (.src) einsammeln kann.
zugriff auf die iframes würde ich über
document.getElementsByTagName("iframe")
versuchen (und diese collection dann per schleife durchlaufen).
und auf der nächsten ebene ersetzt du document dann halt durch die referenz auf das document im iframe.function rekursiere_ueber_iframes(welches_dokument) {
var iframes = welches_dokument.getElementsByTagName("iframe");for(einIframe in iframes) {
var scrInhalt = einIframe.src;
rekursiere_ueber_iframes(einIframe.document);
}
}rekursiere_ueber_iframes(document);
ungetestet; nur grobe idee.
setzt natürlich (mindestens) voraus, dass alle dokumente fertig geladen sind, und das die same origin policy nicht verletzt wird.gruß,
wahsaga
Danke,
Es hat noch etwas gebraucht doch so geht es:
function u_check_frames()
{function rekursiere_ueber_iframes(xxs)
{var xs=xxs, iframes, i,nextScrInhalt, einIframe,k,sbase
iframes = xs.frames; //cc(iframes)
sbase=xs
if(xs.frames[0].frameElement)sbase=xs.frames[0].frameElement.MyPlatz // gespeicherte document Referenz
k=0;
for(einIframe in iframes)
{if(einIframe.indexOf("u_iframe")!= -1)
{scrInhalt = sbase.getElementById(einIframe);alert("Frame: "+scrInhalt.src); // u_iframe <=Teil der id
if( xs.frames[k].frames.length >0)
{nextScrInhalt=xs.frames[k];
rekursiere_ueber_iframes(nextScrInhalt);
}
++k;
}}}
rekursiere_ueber_iframes(document);
}
Gruß J.Kleingeist