JS Zugriff auf content von Frames

andreasst

Mitglied
Also ich möchte folgende Konstruktion:Auf meiner Seite gibt es ein Iframe. Auf dieses möchte ich wenn es geladen wurde zugreifen und Content aus dem Frame herauskopieren:
Ausschnitt aus der Hauptseite:
HTML:
<iframe id="dllst" name="dllst" width="0" height="0" src="#" frameborder="0"></iframe>
	<a href="#" onclick="getdllist();">load</a>&nbsp;<br />
 	<div id="dllist" style="background-color:#009999"> Download Liste
		<ul>
			<li>sdfg</li>
			<li><a href="#" onclick="">Dld1</a> </li>
    		</ul>
	</div>
Die seite die im IFramegeladen wird
HTML:
<body>

<div id="dllist">
<ul>
<li>
</li>
<li><a href="#" onclick="">Dld1</a> </li>
<li><a href="#" onclick="">Dld1</a> </li>
<li><a href="#" onclick="">Dld1</a> </li>

</ul>

</div>



</body><script>var jo ="tt";parent.refreshdllist() </script>
Das JScript
Code:
function getdllist()
{ 
	jump('dllst','nvinc/dldliste.php?');
	
};
function refreshdllist()
{
	var dldiv= document.getElementById("dllist");
	if (dldiv.getElementsByTagName("ul")[0] !=null)
	dldiv.removeChild(dldiv.getElementsByTagName("ul")[0]);	
	var lstnode =dllst.document.getElementById("dllist").cloneNode(true);
	lstnode=lstnode.getElementsByTagName("ul")[0];
	dldiv.appendChild(lstnode);
	
	
	};
Das Problem ist, dass das JS nur im Firefox funktioniert.
 
na gut hab mal was ausprobiert:
also das Problem wird dadurch nicht gelöst, aber es passiert folgendes:
im IFrame kann ich en TextElement hinzufügen,
aber im eigentlichen document kann ich das nicht.
bzw nur im Firefox, nicht im IE


offensichtlich kann ich nachdem ich auf das frame zugegriffen habe nicht mehr auf das eigentliche document zugreifen bzw keine Nodes von einem Frame ins andere kopieren?

mit welchen Befehlen hat der IE Probleme?


Code:
function test1()
{ var vv=document.getElementById("dllist");
	var nn=  frames['dllst'].document.createElement("p"); 
	nn=nn.cloneNode(true);
	nn.appendChild(frames['dllst'].document.createTextNode("text"));
 	frames['dllst'].document.getElementById("dllist").appendChild(nn);
 	var v1=frames['dllst'].parent.document;
 	var vv=	 frames['dllst'].parent.document.getElementById("dllist");
	var mm= v1.createElement("p");
	mm.appendChild(v1.createTextNode("text")) ;
	vv.appendChild(nn);vv.appendChild(mm);
	};
 
Hi,

versuch mal den neuen Knoten mittels innerHTML einzufügen.
Code:
function refreshdllist(){
  var dldiv = document.getElementById("dllist");
  if (dldiv.getElementsByTagName("ul")[0] !=null)
    dldiv.removeChild(dldiv.getElementsByTagName("ul")[0]);

  var lstnode = dllst.document.getElementById("dllist").cloneNode(true);
  dldiv.innerHTML = " Download Liste" + lstnode.innerHTML;
}
Ich kann mich dunkel erinnern, gelesen zu haben, dass der IE Probleme hat, Knoten frameübergreifend zu ersetzen.
Vielleicht weiss @Sven mehr - wäre interessant. Ich denke auch, dass es dazu mal einen Thread hier im Forum gab.

Ciao
Quaese
 
Jo...hast dich recht erinnert :)
im IE kann man Knoten nicht dokumentübergreifend verschieben...sie müssen in dem Dokument, wo sie benötigt werden, auch erzeugt werden.
 
Die Variante mit innerHTML funktioniert soweit gut. Danke für die Info, dass dokumentübergreifendes Kopieren vonKnoten nicht möglich ist.
:)
 

Neue Beiträge

Zurück