iframe contentWindow

  • Themenstarter Themenstarter Netzwerkidi
  • Beginndatum Beginndatum
N

Netzwerkidi

Hallo zusammen,

ich habe ein kleines Problem, den Inhalt eines iFrames (SOP erfüllt) zu übernehmen.
Wenn ich das Alert im folgenden Script drinlasse, dann wird der Inhalt eingelesen, und wenn das fehlt, ist kein Inhalt da. Ich vermute, das hängt damit zusammen, dass der Inhalt in dem Moment noch nicht eingelesen werden konnte, während nach einem alert genug Zeit war, ein Laufzeitproblem also.

Vielleicht hat jemand einen Tipp, wie ich das Problem lösen kann? Wenn ich ohne den iFrame auskäme, also direkt den Inhalt übernehmen könnte aus dem File, das wäre noch besser.

Im IE6 kommt immer die Fehlermeldung wie im Code, gibt es da einen workaround?


Grüße
Idi

HTML:
<html>  
  <body>     
    <div id="myDiv">
    </div>  
<script type="text/javascript">
 
  (function makeFrame() {
      var arr = ['mySameOriginFile1.html', 'mySameOriginFile2.html'],
          krit = 'mySameOriginFile2.html',
          appStrng = "";

      for (var i = 0, l = arr.length; i < l; i++) {
          if (arr[i] == krit) {
              appStrng += "<iframe id=\"myIFrame\" src=\"" + arr[i] + "\" frameborder=\"0\" frameborder=\"0\"></iframe>";
          }
      }
      document.getElementById("myDiv").innerHTML = appStrng;
      var ifr = document.getElementById('myIFrame');
      alert(typeof ifr);
      var content = ifr.contentWindow.document.getElementsByTagName('body')[0].innerHTML;

      document.getElementById("myDiv").innerHTML = content;
      // IE 6 msg: innerHTML ist null oder kein Objekt
  })();
  </script>          
  </body>
</html>

Die Files sehen so aus:

HTML:
<html>
  <body>
    <h3>mySameOriginFile1</h3> 
    <h4>mySameOriginFile1...</h4>
  </body>
</html>

HTML:
<html>
  <body>
    <h3>mySameOriginFile2</h3> 
    <h4>mySameOriginFile2...</h4>
  </body>
</html>
 
Zuletzt bearbeitet von einem Moderator:
Hi,

versuch mal auf das onload-Event des iFrames zu reagieren:
Code:
  (function makeFrame() {
      var arr = ['mySameOriginFile1.html', 'mySameOriginFile2.html'],
          krit = 'mySameOriginFile2.html',
          appStrng = "";

      for (var i = 0, l = arr.length; i < l; i++) {
          if (arr[i] == krit) {
              appStrng += "<iframe id=\"myIFrame\" src=\"" + arr[i] + "\" frameborder=\"0\" frameborder=\"0\"></iframe>";
          }
      }
      document.getElementById("myDiv").innerHTML = appStrng;
      var ifr = document.getElementById('myIFrame');

      ifr.onload = function(){
        var content = ifr.contentWindow.document.getElementsByTagName('body')[0].innerHTML;
        document.getElementById("myDiv").innerHTML = content;
      }
  })();
Ciao
Quaese
 
Hai Quaese,

ja, das macht er nun. Ich finde es deshalb bemerkenswert, weil ein setTimeout mit 10 Sekunden, das ich mal testweise eingebaut hatte, nicht wirkte. Der Inhalt wird zwar angezeigt, aber die Fehlermeldung kommt immer noch.

Danke + Grüße
Idi
 

Neue Beiträge

Zurück