Lars Klenke: Framegroessen aendern im IE und Netscape

Hallo,

dank der schnellen Antwort von Stefan Münz bin ich einen großen Schritt weiter.
Aber leider verfalle ich z.Zt. dem Wahnsinn.
Ich habe eine Funktion geschrieben, die die Minimalgröße eines Frames checked und ggfs. den Frame auf diese Größe ändert.

Beim Netscape fluppt es einwandfrei.
Mit

window.frames[name].innerHeight = minimum;

wird sie Größe des Frames neugesetzt.

Bein IE löppt das in der Theorie so :

window.frames[name].document.body.clientHeight = minimum;

Dieses klapptr aber bei mir in der Praxis nur durch folgende Aktion:

alert("Hoehe  :   " + window.frames[name].document.body.clientHeight);
window.frames[name].document.body.clientHeight = minimum;

Erzeuge ich einen Alert, klappt es, kommentiere ich ihn aus, passiert nichts.
Es ist auchvollkommen egal, was in diesem Alert steht.
Hauptsache ist, er wird erzeugt.
Habe es schon mit einer For-Schleife versucht, aber die bring auch nichts, kann aber auch sein, das sie zu schnell fertig war.

Die Sache mit dem Alert ist zwar fein, nur keine endgültige Lösung, da das ganze funktionieren soll, ohne das der Anwender gestört wird. Der Alert wird mit der Zeit nervig. B^)

MfG
   Lars

  1. Hallo Lars,

    Also mir fällt im Augenblick dazu nichts ein. Wenn Du den gesamten Quelltext zur Verfügung stellen könntest, würde sich vielleicht etwas erschließen.
    Aber als Tipp. Benutz doch für den IE das all-Objekt (mit dem man die HTML-Tags einer Seite beeinflussen kann)), um die Framegröße zu ändern. Damit ist es mir schonmal erfolgreich geglückt. :-)
    Leider hab ich die Seite jetzt nicht zur Hand, um sie Dir als Beispiel zur Verfügung zu stellen. Aber in SelfHTML (z.B.:Javascript-Objektreferenz) wirste ja fündig, was die Handhabung des all-Objekts angeht.

    Gruß
       Michael

    1. Hallo,

      mir mal der Code :

      --------------------- schnipp ------------------
      <script LANGUAGE="JavaScript">

      // Funktionen zum checken und ändern der Frame-/Window-größe
      // (c) 17.01.2000 Lars Klenke

      function checkWindowSize(minimum, width)
          {
           switch (width)
             {
              case 0 : if(window.innerHeight < minimum)
                           {
                  window.innerHeight = 425;
                           };
                         break;
              case 1 : if(window.innerWidth < minimum)
                           {
            window.innerWidth = 775;
                           };
                         break;
              default  :
             }
          };

      function checkFrameSize(name, minimum, width)
      // name    : Name oder Nummer des zu pruefenden Frames
      // minimum : Mindestgroesse des Frames
      // width   : bei  0   wird die Hoehe ueberprueft
      //           bei  1   wird die Breite ueberprueft
          {
      // Netscape
        if(document.layers)
          {
               switch (width)
                 {
                   case "0" : if(window.frames[name].innerHeight < minimum)
                                {
                                window.frames[name].innerHeight = minimum;
                                };
                              break;
                   case "1" : if(window.frames[name].innerWidth < minimum)
                                {
                                window.frames[name].innerWidth = minimum;
                                };
                              break;
                   default  :
                  }
          }
          // IE
          else if (document.all)
            {
        
               switch (width)
                 {
                   case "0" : if(window.frames[name].document.body.clientHeight < minimum)
                                {
               // alert("Hoehe  :   " + window.frames[name].document.body.clientHeight);
                                  window.frames[name].document.body.clientHeight = minimum;                      
                                };
                              break;
                   case "1" : if(window.frames[name].document.body.clientWidth < minimum)
                                {
                                  window.frames[name].document.body.clientWidth;
                                };
                              break;
                   default  :
                  }  
         }
      };

      function check()
        {
         checkFrameSize('1','110','0'); // Mindeshoehe des Frames oben wird geprueft
         checkFrameSize('3','150','1'); // Mindestbreite des Frames menue wird geprueft
         checkWindowSize('425','0');    // Fesnterhoehe auf das uebergebene Minimum checken
         checkWindowSize('775','1');    // Fensterbreite auf das uebergebene Minimum checken      
        };

      </script>
      --------------------- schnapp ------------------

      Die Fkt.  steht im <frameset ..... onResize="check()">

      MfG
          Lars

      1. Hallo Lars,

        // IE
            else if (document.all)
              {
          
                 switch (width)
                   {
                     case "0" : if(window.frames[name].document.body.clientHeight < minimum)
                                  {
                 // alert("Hoehe  :   " + window.frames[name].document.body.clientHeight);
                                    window.frames[name].document.body.clientHeight = minimum;                      
                                  };
                                break;
                     case "1" : if(window.frames[name].document.body.clientWidth < minimum)
                                  {
                                    window.frames[name].document.body.clientWidth;
                                  };
                                break;
                     default  :
                    }  
           }

        »»  };  
        »»

        Das alert deutet eigentlich auf ein Zeitproblem hin. Denn das alert unterbricht sozusagen den Zeitverlauf.
        Versuche mal für den IE mit setTimeout zu arbeiten.
        Vielleicht löst es dein Problem.
        Kleine Frage am Rande, taucht das Problem auch im IE4 auf oder nur im IE5?

        Viele Grüße

        Antje

        1. Das alert deutet eigentlich auf ein Zeitproblem hin. Denn das alert unterbricht sozusagen den Zeitverlauf.
          Versuche mal für den IE mit setTimeout zu arbeiten.
          Vielleicht löst es dein Problem.

          Danke werde es mal versuchen.

          Kleine Frage am Rande, taucht das Problem auch im IE4 auf oder nur im IE5?

          Es ist der IE5.01

          MfG
             Lars