Rene Munsch: IFrames die manchmal (!) gehen... confused!

Hallo Kollegen,
ich habe hier einen seltsamen Effekt, den ich nicht erklären kann. Auch hilft mir der Scriptdebugger und Google nicht mehr weiter.
Ziel der Übung ist Javascriptgesteuert den Inhalt von 4 IFrames zu steuern... was manchmal geht und manchmal nicht...
Getestet in IE und Opera. Ich brauchs für IE!

hier mein Code:
----schnipp---------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html><HEAD>

</HEAD>

<body>
<table>
<tr><td>
<iframe src="vga1.html" width="200" height="200" name="vga1">
  <p>Ihr Browser kann leider keine eingebetteten Frames anzeigen:</p>
</iframe>
</td><td>
<iframe src="vga2.html" width="200" height="200" name="vga2">
  <p>Ihr Browser kann leider keine eingebetteten Frames anzeigen:</p>
</iframe>
</td></tr>
<tr><td>
<iframe src="vga3.html" width="200" height="200" name="vga3">
  <p>Ihr Browser kann leider keine eingebetteten Frames anzeigen:</p>
</iframe>
</td><td>
<iframe src="vga4.html" width="200" height="200" name="vga4">
  <p>Ihr Browser kann leider keine eingebetteten Frames anzeigen:</p>
</iframe>
</td></tr></TR></table>&nbsp;

<script language="javascript">
<!--
var page = new Array("http://www.google.de/search?sourceid=navclient&hl=de&ie=UTF-8&rls=GGIH,GGIH:2006-47,GGIH:de&q=0","http://www.google.de/search?sourceid=navclient&hl=de&ie=UTF-8&rls=GGIH,GGIH:2006-47,GGIH:de&q=1","http://www.google.de/search?sourceid=navclient&hl=de&ie=UTF-8&rls=GGIH,GGIH:2006-47,GGIH:de&q=2","http://www.google.de/search?sourceid=navclient&hl=de&ie=UTF-8&rls=GGIH,GGIH:2006-47,GGIH:de&q=3","http://www.google.de/search?sourceid=navclient&hl=de&ie=UTF-8&rls=GGIH,GGIH:2006-47,GGIH:de&q=4","http://www.google.de/search?sourceid=navclient&hl=de&ie=UTF-8&rls=GGIH,GGIH:2006-47,GGIH:de&q=5","http://www.google.de/search?sourceid=navclient&hl=de&ie=UTF-8&rls=GGIH,GGIH:2006-47,GGIH:de&q=6","http://www.google.de/search?sourceid=navclient&hl=de&ie=UTF-8&rls=GGIH,GGIH:2006-47,GGIH:de&q=7","http://www.google.de/search?sourceid=navclient&hl=de&ie=UTF-8&rls=GGIH,GGIH:2006-47,GGIH:de&q=8","http://www.google.de/search?sourceid=navclient&hl=de&ie=UTF-8&rls=GGIH,GGIH:2006-47,GGIH:de&q=9","http://www.google.de/search?sourceid=navclient&hl=de&ie=UTF-8&rls=GGIH,GGIH:2006-47,GGIH:de&q=10","http://www.google.de/search?sourceid=navclient&hl=de&ie=UTF-8&rls=GGIH,GGIH:2006-47,GGIH:de&q=11");

var secs = 5;
var wait = secs * 1000;
var pages = page.length;

//alert("erste befüllung");
pages=0;
  window.frames.vga1.document.location.href=page[pages];
  window.frames.vga2.document.location.href=page[pages+1];
  window.frames.vga3.document.location.href=page[pages+2];
  window.frames.vga4.document.location.href=page[pages+3];
pages=4;
function start(){
   window.setInterval ("update()", wait);
}
start();

function update() {
//  alert("neuer inhalt");
  if (pages>=page.length){
   pages=0;
  }else{
   pages=pages+4;
  }
  window.frames.vga1.document.location.href=page[pages];
  window.frames.vga2.document.location.href=page[pages+1];
  window.frames.vga3.document.location.href=page[pages+2];
  window.frames.vga4.document.location.href=page[pages+3];
}

//-->
      </script>
</body>
</html>

----schnapp---------

  1. Hallo Rene,

    [code lang=javascript]

    var pages = page.length;

    // pages ist also eine lokale Variable, die ...

    pages=0;
      window.frames.vga1.document.location.href=page[pages];
      window.frames.vga2.document.location.href=page[pages+1];
      window.frames.vga3.document.location.href=page[pages+2];
      window.frames.vga4.document.location.href=page[pages+3];
    pages=4;
    function start(){
       window.setInterval ("update()", wait);
    }
    start();

    function update() {

    // ... in der Funktion update() nicht zur Verfügung steht.

    //  alert("neuer inhalt");
      if (pages>=page.length){
       pages=0;

    // Du führst eine neue Variable pages ein, die mit der aussen definierten
    // nichts zu tun hat.

    }else{
       pages=pages+4;
      }
      window.frames.vga1.document.location.href=page[pages];
      window.frames.vga2.document.location.href=page[pages+1];
      window.frames.vga3.document.location.href=page[pages+2];
      window.frames.vga4.document.location.href=page[pages+3];
    }

    Näheres zur Variablendeklaration erfährst Du in SELFHTML, Javascript,
    Abschnitt Variablen und Werte.

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz

      danke für deine schnelle Antwort.
      Richtig, das mit der Variablen gültigkeit habe ich übersehen.
      Aber der Fehler bleibt:

      Ich bekomme im IE immer ein "zugriff verweigert". Selbst wenn ich die Zeile mal zu debugzwecken hardcode:

      -------schnipp---------
      window.frames.vga1.document.location.href="http://www.google.de";
      -------schnapp---------

      was ich nicht ganz verstehe, denn die gleiche anweisung funktioniert ja zu beginn des scripts schonmal....
      Ist meine Addressierung des objektes denn richtig? - ich hasse Javascript....

      Wäre schön, wenn du nochmal drüberguckst.

      Gruß
      Rene´

      1. Hello,

        Ich bekomme im IE immer ein "zugriff verweigert". Selbst wenn ich die Zeile mal zu debugzwecken hardcode:

        Same Origin Policy

        MfG
        Rouven

        --
        -------------------
        Eine Bilanz ist wie der Bikini einer Frau. Sie zeigt fast alles, aber verdeckt das Wesentliche  --  Günter Stotz, Regierungsdirektor des baden-württembergischen Wirtschaftsministeriums
        1. Hallo Nochmal!

          Habe alles gefixt.
          Habe jetzt einen schicken automatischen Frame-Switcher.
          Wenn jemand den Code brauchen kann, soll er ruhig zugreifen:
          ---------schnipp-------
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                 "http://www.w3.org/TR/html4/loose.dtd">
          <html><HEAD>

          </HEAD>

          <body>
          <table>
          <tr><td>
          <iframe src="vga1.html" width="200" height="200" name="vga1" style="html {overflow-x:hidden;}" frameborder=0>
            <p>Ihr Browser kann leider keine eingebetteten Frames anzeigen:</p>
          </iframe>
          </td><td>
          <iframe src="vga2.html" width="200" height="200" name="vga2" frameborder=0>
            <p>Ihr Browser kann leider keine eingebetteten Frames anzeigen:</p>
          </iframe>
          </td></tr>
          <tr><td>
          <iframe src="vga3.html" width="200" height="200" name="vga3" frameborder=0>
            <p>Ihr Browser kann leider keine eingebetteten Frames anzeigen:</p>
          </iframe>
          </td><td>
          <iframe src="vga4.html" width="200" height="200" name="vga4" frameborder=0>
            <p>Ihr Browser kann leider keine eingebetteten Frames anzeigen:</p>
          </iframe>
          </td></tr></TR></table>&nbsp;

          <script language="javascript">
          <!--
          var page = new Array("vga1.html","vga2.html","vga3.html","vga4.html","vga5.html","vga6.html","vga7.html","vga8.html","vga9.html");

          var secs = 5;
          wait = secs * 1000;
          pages = page.length;
          slider=1;
          pages=0;
            window.frames.vga1.document.location.href=page[pages];
            window.frames.vga2.document.location.href=page[pages+1];
            window.frames.vga3.document.location.href=page[pages+2];
            window.frames.vga4.document.location.href=page[pages+3];
          pages=4;
          function update() {
            if (pages==page.length-1){
             pages=0;
            }else{
             pages=pages+1;
            }
            switch (slider) {
             case 1:
              window.frames.vga1.document.location.href=page[pages];
             break;
             case 2:
              window.frames.vga2.document.location.href=page[pages];
             break;
             case 3:
              window.frames.vga3.document.location.href=page[pages];
             break;
             case 4:
              window.frames.vga4.document.location.href=page[pages];
             break;
            }
            slider=slider+1;
            if (slider>4){slider=1;}
          }
          function start(){
           var check=window.setInterval ('update()', 5000);
          }
          start();

          //-->
                </script>
          </body>
          </html>

          ---------schnapp-------
          das man die im array definierten html dateien auch anlegen muss, und die millisekunden im Interval anpassen muss halte ich für selbsterklärend.

          Gruß
          Rene´
          PCHotFix.de