Marko Rauh: ie 6 zeigt 0 für seitenhöhe an(document.body.offsetHeight)

kann mir jemand helfen?

im folgenden code in der funktion centerLayer(layerID) wird die seitenbreite und höhe ermittelt. bei breite klappt auch alles super. nur bei der höhe zeigt er mir 0 an.
ich versteh das nicht, vor allem weil die breite funktioniert.

danke und guten rutsch

<script language="javascript" type="text/javascript">
<!--
var IW, IH;

}

function accessCSS(layerID){          //access a CSS property
      //alert("ich war hier");
            if(document.getElementById){    //ie5+ und ns6
                  return document.getElementById(layerID).style;

}else if(document.all){     //ie4+
                  return document.all[layerID].style;

}else if(document.layers){     //ns4
                  return document.layers[layerID];
             }
      }
      function getLayerWidth(layerID){     //breite des layers

if(document.getElementById){
                 return parseInt(document.getElementById(layerID).offsetWidth);
           }else if(document.all){
                 return parseInt(document.all[layerID].offsetWidth);
           }else if(document.layers){
                 return parseInt(document.layers[layerID].clip.width);
           }
     }
     function getLayerHeight(layerID){     //höhe des layers

if(document.getElementById){
                 return parseInt(document.getElementById(layerID).offsetHeight);
           }else if(document.all){
                 return parseInt(document.all[layerID].offsetHeight);
           }else if(document.layers){
                 return parseInt(document.layers[layerID].clip.height);
           }

}

function centerLayer(layerID){
          var IW = window.innerWidth ? window.innerWidth : document.body.offsetWidth;
     var IH = window.innerHeight ? window.innerHeight : document.body.offsetHeight;

//alert(document.body.offsetHeight);
         //alert("breite: " + IW);

accessCSS(layerID).left = (IW - getLayerWidth(layerID))/2;
           accessCSS(layerID).top = (IH - getLayerHeight(layerID))/2;

}
      function fensterpop(SRC) {
      var breite = screen.width/2;
     var hoehe = screen.height/2;
     var posx = breite-320;
     var posy = hoehe-240;
     myscreenvar = window.open(SRC,"menu","width=640,height=480,status=no,resizable=no,scrollbars=0");
     myscreenvar.moveTo(posx,posy);
     myscreenvar.focus();
      }

//-->
</script>

im body steht dann:

<BODY id="ibody" bgcolor="#4a5401" onLoad="centerLayer('auswahl')" onResize="centerLayer('auswahl')">
<div id="auswahl" style="position:absolute">
<TABLE border="0" width="200" height="50">
  <TR>
    <TD align="center" valign="center"><FONT face="Comic Sans MS" size="5" color="white"><A href="index.html" onClick="fensterpop('menu1.swf')">flash </A></FONT>
</TD>
    <TD align="center" valign="center"><FONT face="Comic Sans MS" size="5" color="white"><A href="noflash/menu.html">html </A></FONT></TD>
  </TR>
</TABLE>
</div>
</BODY>

  1. Tag Marko.

    kann mir jemand helfen?

    Also ich nicht, da ich dein Problem nicht reproduzieren kann: alle mir hier zum Testen zur Verfügung stehenden Browser (NN 4.78, NN 6.2, FF 1.0, Opera 7.11, IE 6) zeigen einheitlich eine Layergröße von 200px * 50px an. Dein Fehler muss woanders liegen. Übrigens ist da eine geschweifte Klammer zu viel (gleich nach "var IW, IH;").

    [dsf 3.6]
    Siechfred

    --
    »Sie kochten heimlich mit Wasser und tranken öffentlich Wein.«
    1. ja servus,

      es geht ja auch nicht um die layergröße, sondern die größe des anzeigebereiches, quasi der body bereich, den man für ie6 mit document.body.offsetHeight ausgibt. nur gibt er bei mir für den wert 0 aus. und das kann ja nicht sein.

      trotzdem danke

      [dsf 3.6]

      1. Tag Marko.

        es geht ja auch nicht um die layergröße, sondern die größe des anzeigebereiches, quasi der body bereich, den man für ie6 mit document.body.offsetHeight ausgibt. nur gibt er bei mir für den wert 0 aus. und das kann ja nicht sein.

        Das ändert nichts (hatte ich vergessen zu erwähnen), der IE zeigt mir treu und brav den aktuellen Wert von offsetHeight und offsetWidth an, auch bei Veränderung der Fenstergröße.

        [dsf 3.6]
        Siechfred

        --
        »Sie kochten heimlich mit Wasser und tranken öffentlich Wein.«
        1. ja seruvs,

          schön daß du dir für mein problem zeit nimmst.

          ich hab die lösung jetzt auch gefunden.
          ob dus glaubst oder nicht es lag an der headerzeile

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

          bei mir fehlte das transitional, warum auch immer.

          jetzt funst es hervorragend.

          darauf soll mal einer kommen.

          vielen dank für die vorschläge

          marko

      2. es geht ja auch nicht um die layergröße, sondern die größe des anzeigebereiches, quasi der body bereich, den man für ie6 mit document.body.offsetHeight ausgibt. nur gibt er bei mir für den wert 0 aus. und das kann ja nicht sein.

        So wie es aussieht ist deine Seite im standard Mode.
        In dem Falle musst du:
        window.document.documentElement.offsetHeight
        statt document.body benutzen.

        Abfragen läßt sich das so:
        ////////////////////////////////////////////////////////////
        function getWinSize(win)
        {
            if(!win) win = window;
            var s = new Object();
            if(typeof win.innerWidth != 'undefined')
            {
                s.width = win.innerWidth;
                s.height = win.innerHeight;
            }
            else
            {
                 var obj = getBody(win);
                 s.width = parseInt(obj.clientWidth);
                 s.height = parseInt(obj.clientHeight);
            }
            return s;
        }
        ////////////////////////////////////////////////////////////
        function getBody(w)
        {
            return (w.document.compatMode && w.document.compatMode == "CSS1Compat") ? w.document.documentElement : w.document.body || null;
        }

        Struppi.