iframe in iframe löschen
J.Kleingeist
- javascript
0 wahsaga0 Avalon0 j.Kleingeist
Hallo,
nachfolgend mein Problem,
test1.html:
...
<iframe id="x2" src="test2.html">
---------------------------------------------------
Main:
...
<iframe id="x1" src="test1.html">
<script>
i=0;
document.body.removeChild(frames[i].frameElement)
// löscht beide iframe x1 incl. Inhalt (iframe x2)
// mit zB.
i=0;
alert(document.frame[i].[frame[i].frameElement.id)
// kann ich auf das 2. iframe (x2) zugreifen
// Nur finde ich keinen Weg mit removeChild das 2. iframe zu löschen.
Weiß jemand Rat?
Danke
Guß J.Kleingeist
hi,
test1.html:
<iframe id="x2" src="test2.html">Main:
<iframe id="x1" src="test1.html">
<script>
i=0;
document.body.removeChild(frames[i].frameElement)
// löscht beide iframe x1 incl. Inhalt (iframe x2)
was ist frameElement?
// mit zB.
i=0;
alert(document.frame[i].[frame[i].frameElement.id)
// kann ich auf das 2. iframe (x2) zugreifen// Nur finde ich keinen Weg mit removeChild das 2. iframe zu löschen.
wo von wäre denn der zweite iframe ein Child?
gruß,
wahsaga
hi,
test1.html:
<iframe id="x2" src="test2.html">Main:
<iframe id="x1" src="test1.html">
<script>
i=0;
document.body.removeChild(frames[i].frameElement)
// löscht beide iframe x1 incl. Inhalt (iframe x2)was ist frameElement?
// mit zB.
i=0;
alert(document.frame[i].[frame[i].frameElement.id)
// kann ich auf das 2. iframe (x2) zugreifen// Nur finde ich keinen Weg mit removeChild das 2. iframe zu löschen.
wo von wäre denn der zweite iframe ein Child?
gruß,
wahsaga
hi,
wenn ich das man wüßte.
Eigentlich von ifame x1
Über document.frame[i].[frame[i]
bzw. document.frame[i].[frame[i].frameElement
kann ich so ziemlich alles mit iframe x2 anstellen
nur gelöscht bekomme ich es nicht.
Gruß J.Kleingeist
i=0;
document.body.removeChild(frames[i].frameElement)
// löscht beide iframe x1 incl. Inhalt (iframe x2)
// mit zB.
i=0;
alert(document.frame[i].[frame[i].frameElement.id)
// kann ich auf das 2. iframe (x2) zugreifen
// Nur finde ich keinen Weg mit removeChild das 2. iframe zu löschen.
Zunächst brauchst Du eine Referenz auf das Dokument des 1. IFrames, z.B.:
frameDoc1 = document.frames[i].contentDocument;
dann solltest Du wie oben weiterarbeiten können:
frameDoc1.body.removeChild(...)
Gruß
Avalon
i=0;
document.body.removeChild(frames[i].frameElement)
// löscht beide iframe x1 incl. Inhalt (iframe x2)// mit zB.
i=0;
alert(document.frame[i].[frame[i].frameElement.id)
// kann ich auf das 2. iframe (x2) zugreifen// Nur finde ich keinen Weg mit removeChild das 2. iframe zu löschen.
Zunächst brauchst Du eine Referenz auf das Dokument des 1. IFrames, z.B.:
frameDoc1 = document.frames[i].contentDocument;
dann solltest Du wie oben weiterarbeiten können:
frameDoc1.body.removeChild(...)
Gruß
Avalon
hi,
Danke für die Antwort.
Mit der Referenz ist das so ein Problem.
contentDocument ist unbekannt ( "... Null oder kein Objekt..")
unter document.frames[0].frameElement.
gibt es ein contentWindow
und ownerDocument;
mit
document.frames[0].frameElement.ownerDocument;
kann ich auf as erste iframe (x1) zugreifen u. löschen
frameDoc1=document.frames[0].frames[0].frameElement.ownerDocument;
stellt das 2. ifame (x2) zur Verfügung.
Doch wie in anderen Ansätzen auch
ergibt
frameDoc1.body.removeChild(frames[0].frameElement)
die Fehlermeldung "ungültiges Argument"
Diese Fehlermelung ist ganz Interessant.
alert(document.frame[0].frame[0].frameElement.id) // .src etc.
liefert alle Infomationen zu iframe x2.
Nur removeChild reagiert mit unültiem Argument.
(Ich habe die ifames mittels document.createElement("Iframe");
in der Anwendung erzeugt, dann muß das Ding doch auch wieder zu entfernen sein.)
Gruß J.Kleingeist
Hallo j.Kleingeist
(Ich habe die ifames mittels document.createElement("Iframe");
in der Anwendung erzeugt, dann muß das Ding doch auch wieder zu entfernen sein.)
Bei Elementen, die du selbst in der Anwendung erzeugst, dürfte es doch einfacher
sein, diese zu merken anstatt sie neu zu suchen.
MyElement = document.createElement("Iframe");
MyPlatz = wo_das_Element_eingehangen_werden_soll;
MyPlatz.appendChild(MyElement);
...
...
...
MyPlatz.removeChild(MyElement);
Auf Wiederlesen
Detlef
Hallo j.Kleingeist
(Ich habe die ifames mittels document.createElement("Iframe"); in der Anwendung erzeugt, dann muß das Ding doch auch wieder zu entfernen sein.)
Bei Elementen, die du selbst in der Anwendung erzeugst, dürfte es doch einfacher sein, diese zu merken anstatt sie neu zu suchen.
> MyElement = document.createElement("Iframe");
> MyPlatz = wo_das_Element_eingehangen_werden_soll;
> MyPlatz.appendChild(MyElement);
> ...
> ...
> ...
> MyPlatz.removeChild(MyElement);
>
Auf Wiederlesen Detlef
Danke für die Antwort. Im Prinzip richtig, hatte ich auch so erwartet. Innerhalb des Grund-documents funktioniert auch alles wie gewünscht. (in meinem Bsp. iframe x1) Bei iframe x2 (iframe in iframe) geht es einfach nicht. Auch nach dem von Dir genannnten Vefahren kommt die Fehlermeldung: Ungültiges Argument
Gruß J.Kleineist
hi,
Danke für die Antwort.
Mit der Referenz ist das so ein Problem.
contentDocument ist unbekannt ( "... Null oder kein Objekt..")
Dann benutzt den den falschen Browser für Deine Primärtests!
Aber dann würde das Problem später wiieder auftauchen.
unter document.frames[0].frameElement.
gibt es ein contentWindow
frameWin1 = document.frames[i].contentWindow;
und ownerDocument;
mit
document.frames[0].frameElement.ownerDocument;
kann ich auf as erste iframe (x1) zugreifen u. löschen
frameDoc1=document.frames[0].frames[0].frameElement.ownerDocument;
stellt das 2. ifame (x2) zur Verfügung.Doch wie in anderen Ansätzen auch
ergibt
frameDoc1.body.removeChild(frames[0].frameElement)
frameWin1.document.body.removeChild(...);
Gruß
Avalon
hi,
Danke für die Antwort.
Mit der Referenz ist das so ein Problem.
contentDocument ist unbekannt ( "... Null oder kein Objekt..")
Dann benutzt den den falschen Browser für Deine Primärtests!
Aber dann würde das Problem später wiieder auftauchen.
unter document.frames[0].frameElement.
gibt es ein contentWindow
frameWin1 = document.frames[i].contentWindow;
und ownerDocument;
mit
document.frames[0].frameElement.ownerDocument;
kann ich auf as erste iframe (x1) zugreifen u. löschen
frameDoc1=document.frames[0].frames[0].frameElement.ownerDocument;
stellt das 2. ifame (x2) zur Verfügung.Doch wie in anderen Ansätzen auch
ergibt
frameDoc1.body.removeChild(frames[0].frameElement)
frameWin1.document.body.removeChild(...);Gruß
Avalon
Danke,
nur so einfach ist die Sache nicht. Selbstveständlich hatte ich
einiges mit contentWindow; ownerDocument; versucht.
Der Knackpunkt ist das Iframe im Iframe.
Ich suche eine andere bzw. die richtige Form für
document.frame[i].frameElement // zeigt auf iframe x1
document.body.removeChild(frames[i].frameElement) // löscht iframe x1
document.frame[i].frame[k].frameElement // zeigt auf iframe x2
document.frame[i].body.removeChild(frames[k].frameElement) // meldet Fehler
Es ist schon so wie Du schreibst, es fehlt die richtige Referenz auf das Dokument des 1. IFrames. Ich speichere sie jetzt mit jedem Frame.
while(xb.frames.length >0) { xb=xb.frames[0]} // iframe in der letzten Ebene
fd = xb.frameElement.MyPlatz
fc = fd.getElementsByTagName("iframe")[i]
xf = fc.src // die betroffene Datei.html
fd.body.removeChild(fc)
Das funktioniert soweit.
Dennoch wüßte ich allzugerne wie sich MyPlatz auflöst.
(document.irgendetwas.irgendetwas...)
Gruß J.Kleineist