J.Kleingeist: iframe in iframe löschen

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

  1. 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

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. 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

  2. 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

    1. 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

      1. 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

        --
        - Wissen ist gut
        - Können ist besser
        - aber das Beste und Interessanteste ist der Weg dahin!
        1. 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

      2. 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

        1. 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