Meise2000: Aus einem IFrame auf einen anderen IFrame zugreifen

Hallo Leute,

ich habe ein Problem. Ich möchte aus einer Seite, die in einem IFRAME geladen wurde, auf mittels JavaScript die DOM-Struktur einer anderen Seite (die in einem anderen IFRAME geladen wurde) ändern. Geht das überhaupt?

Gruss,
Meise.

  1. hi,

    Ich möchte aus einer Seite, die in einem IFRAME geladen wurde, auf mittels JavaScript die DOM-Struktur einer anderen Seite (die in einem anderen IFRAME geladen wurde) ändern. Geht das überhaupt?

    sofern die same origin policy eingehalten wird, spricht wenig dagegen.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  2. Hi,

    ich habe ein Problem. Ich möchte aus einer Seite, die in einem IFRAME geladen wurde, auf mittels JavaScript die DOM-Struktur einer anderen Seite (die in einem anderen IFRAME geladen wurde) ändern. Geht das überhaupt?

    wenn Sven Rautenberg recht hat, dann ja: http://aktuell.de.selfhtml.org/tippstricks/javascript/fensterzugriff/index.htm

    Gruss,
    Ludger

    --
    "Die SPD im Aufwind?"
    1. Hi

      wenn Sven Rautenberg recht hat, dann ja: http://aktuell.de.selfhtml.org/tippstricks/javascript/fensterzugriff/index.htm

      Ja, ich will aber nicht auf das Frame-Objekt zugreifen, sondern direkt in die DOM-Struktur der zugehörigen Seite. Ich glaube, das geht nicht, weil es keine IFRAME-Eigenschaft gibt, die mir die Seite als Object zurückliefert (wie es das ja bei dem Window-Object gibt)

      Meine Startseite:

      <html>
       :
      <body>
       :
       <iframe id="a" name="a" ..></iframe>
       <iframe id="b" name="b" ..></iframe>
      </body>
      </html>

      In Frame a lade ich eine Seite, die nun DOM-Elemente aus der Seite in Frame b verändert soll. Wie mache ich das?

      parent.getElementById(a) - ? und dann?!

      Ich hab das IFrame-Objekt, aber wie komme ich an die Elemente der Seite?

      Gruss Meise.

      1. NACHTRAG:

        Sorry, es muss natürlich

        parent.getElementById("b")

        heissen!

      2. hi,

        Ja, ich will aber nicht auf das Frame-Objekt zugreifen, sondern direkt in die DOM-Struktur der zugehörigen Seite. Ich glaube, das geht nicht, weil es keine IFRAME-Eigenschaft gibt, die mir die Seite als Object zurückliefert (wie es das ja bei dem Window-Object gibt)

        wenn es dir erst mal gelungen ist, den iframe wie ein normales window anzusprechen - wo ist dann noch das problem, darunter analog mit document weiterzuarbeiten, wie beim "normalen" fenster auch?

        parent.getElementById(a) - ? und dann?!

        dann kommst erst mal document, welches dann die einzelnen elementknoten beeinhaltet.

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. parent.getElementById(a) - ? und dann?!

          dann kommst erst mal document, welches dann die einzelnen elementknoten beeinhaltet.

          Probier das mal aus. Das geht nicht, denn ein IFRAME ist kein window-Object (und hat somit auch keine document-Eigenschaft)

          Ausserdem lässt es der IE sowieso nicht zu, wenn man in einem fremden Frame die DOM-Struktur verändern will...

          Meise

          1. hi,

            Probier das mal aus. Das geht nicht, denn ein IFRAME ist kein window-Object (und hat somit auch keine document-Eigenschaft)

            natürlich ist ein iframe eine window-instanz, wie jeder normale frame auch, und dem zu folge liegt unter ihm document.

            Ausserdem lässt es der IE sowieso nicht zu, wenn man in einem fremden Frame die DOM-Struktur verändern will...

            ja sag das doch gleich, dass du an "fremden" seiten rumfingern willst ... das muss dir natürlich _jeder_ browser untersagen, der javascript korrekt implementiert hat, stichwort same origin policy.

            gruß,
            wahsaga

            --
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
            1. natürlich ist ein iframe eine window-instanz, wie jeder normale frame auch, und dem zu folge liegt unter ihm document.

              Sorry, wegen der Nachfrage. Ich kapiere es nicht. Was mache ich falsch?

              ************
              <html>
              <head>
               <title>IFrame-Test</title>
               <script type="text/javascript">
                function testMe() {
                 alert(document.getElementById("iframe").document.getElementById("unentschlossen"));
                }
               </script>
              </head>
              <body onload="javascript:testMe()">
               <h1>IFrame-Test</h1>
               <iframe

              src="http://de.selfhtml.org/javascript/objekte/anzeige/document_get_element_by_id.htm"

              width="400" height="400" id="iframe">Not supported</iframe>
              </body>
              </html>

              ************

              ja sag das doch gleich, dass du an "fremden" seiten rumfingern willst ... das muss dir natürlich _jeder_ browser untersagen, der javascript korrekt implementiert hat, stichwort same origin policy.

              Was bedeutet "fremde Seiten"? Andere Domain?! Das ist bei mir nicht gegeben. Ich will nur die Seiten vom meinem Server laden (und verändern).

              Gruss, Meise.

              1. Hi,

                Was mache ich falsch?

                Du sprichst das Iframe-Element an und nicht das Window-Objekt des Iframe.

                ************
                <html>
                <head>
                <title>IFrame-Test</title>
                <script type="text/javascript">
                  function testMe() {
                   alert(document.getElementById("iframe").document.getElementById("unentschlossen"));

                Einen (I)frame kannst du einfach mit seinem Namen ansprechen:

                alert(myIframe.document.getElementById("unentschlossen"));

                Es ginge aber auch über die Frames-Collection:

                alert(frames[0].document.getElementById("unentschlossen"));
                      alert(frames["myIframe"].document.getElementById("unentschlossen"));
                      alert(frames.myIframe.document.getElementById("unentschlossen"));

                }
                </script>
                </head>
                <body onload="javascript:testMe()">

                <body onload="testMe()">

                <h1>IFrame-Test</h1>
                <iframe

                src="http://de.selfhtml.org/javascript/objekte/anzeige/document_get_element_by_id.htm"

                width="400" height="400" id="iframe">Not supported</iframe>

                width="400" height="400" id="iframe" name="myIframe">Not supported</iframe>

                </body>
                </html>

                ************

                Grüße, Stefan