Mario: js Probleme mit IE (aktuelle Fensterhoehe)

Hi,

mal wieder ein Problem mit dem Internet Explorer. Thema: aktuelle Fensterhoehe.

Da IE als einziger Browser window.innerWidth und window.innerHeight, verwende ich bei IE eben document.body.offsetWidth und document.body.offsetHeight.

document.body.offsetWidth funktioniert wunderbar, document.body.offsetHeight liefert allerdings immer ein konstantes Ergebnis von 42. Das Fenster ist aber SICHER hoeher (Fullscreen). Da es so konstant ist, nehme ich an, dass dies die Hoehe eines Elementes in der Seite ist, aber welche?

Habs auch schon so versucht: window.document.getElementById("body").offsetHeight, was allerdings das selbe Ergebnis liefert.

Hat irgendjemand eine Ahnung wie man den kaputten Internet Explorer ueberreden kann das richtige Ergebnis zu liefern?

Danke!

  1. hi,

    document.body.offsetWidth funktioniert wunderbar, document.body.offsetHeight liefert allerdings immer ein konstantes Ergebnis von 42. Das Fenster ist aber SICHER hoeher (Fullscreen).

    Was hat die Höhe des body-Elementes mit der Fensterhöhe zu tun?

    Da es so konstant ist, nehme ich an, dass dies die Hoehe eines Elementes in der Seite ist, aber welche?

    Die von body vermutlich - denn die fragst du doch ab, oder?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      document.body.offsetWidth funktioniert wunderbar, document.body.offsetHeight liefert allerdings immer ein konstantes Ergebnis von 42. Das Fenster ist aber SICHER hoeher (Fullscreen).

      Was hat die Höhe des body-Elementes mit der Fensterhöhe zu tun?

      Da es so konstant ist, nehme ich an, dass dies die Hoehe eines Elementes in der Seite ist, aber welche?

      Die von body vermutlich - denn die fragst du doch ab, oder?

      jaja. genau das war das problem. ich dachte body = window. ist dem aber wohl nicht so ;-/

      anstatt body auf 100% hoehe zu setzen, gibts da noch ne andere alternative?

      gruß,
      wahsaga

      1. anstatt body auf 100% hoehe zu setzen, gibts da noch ne andere alternative?

        sowas "window.offsetHeight" geht ja im vergleich zu sowas: "window.innerHeight" nicht!

        1. hi,

          anstatt body auf 100% hoehe zu setzen, gibts da noch ne andere alternative?

          sowas "window.offsetHeight" geht ja im vergleich zu sowas: "window.innerHeight" nicht!

          http://www.quirksmode.org/viewport/compatibility.html könnte weiterhelfen.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. oki, problem gefunden.

    im body hab ich nur mit weiteren divs gearbeitet...obwohl die Seite "voll" war, war der body tatsaechlich nur 42 pixel hoch, die anderen divs hab ich mit css platziert.

    die Loesung: <body style="height:100%"><div>....

    in den 100% liegt die loesung!

  3. nun noch die Loesung als funktion

    // returns INNER width of window
    function getWindowWidth() {
     // if innerWidth is unknown [Internet Explorer] use offsetWidth
      if (window.innerWidth) {
        return window.innerWidth;
      } else if (document.body && document.body.offsetWidth) {
       // important: for IE set body width = 100%
       document.getElementsByTagName("body")[0].style.setAttribute("width", "100%", "false");
        return document.body.offsetWidth;
      } else {
        return 0;
      }
    }

    // returns INNER height of window
    function getWindowHeight() {
     //if innerHeight is unknown [Internet Explorer] use offsetHeight
      if (window.innerHeight) {
        return window.innerHeight;
      } else if (document.body && document.body.offsetHeight) {
     // important: for IE set body height = 100%
     document.getElementsByTagName("body")[0].style.setAttribute("height", "100%", "false");
        return document.body.offsetHeight;
      } else {
        return 0;
      }
    }

    1. Hallo,

      nun noch die Loesung als funktion

      Wie gesagt http://www.quirksmode.org/viewport/compatibility.html#link2.

      // returns INNER width of window

      document.getElementsByTagName("body")[0].style.setAttribute("width", "100%", "false");

      Unnötig kompliziert.

      Mathias