BillyR.: Anzeigefläche ermitteln

Hallo Alle,
ich beziehe mich hier auf den Thread zum gleichen Thema im Archiv, bzw. auf folgenden Beitrag darin:
http://forum.de.selfhtml.org/archiv/2005/1/t98419/#m599964
von JürgenB.
Jürgen schlägt vor, die Anzeigenhöhe über offsetHeight zu ermitteln, so wie in diesem Artikel in SELFHTML beschrieben:
http://de.selfhtml.org/javascript/objekte/all.htm#offset_height

Da war ich auch schon gelandet, leider funktioniert es nicht in meinem Firefox 1.5. Auf der SELFHTML-Beispielseite wird eine Höhe von 0 ausgegeben.
offsetWidth wird aber richtig gelesen.

Bin ich der einzige, bei dem dieses Problem aufgetreten ist?
Und wenn das Problem allgemein besteht, wem teile ich das mit, damit es gelöst wird?

Jürgens Vorschlag, um die Anzeigefläche zu ermitteln...

if (document.body && document.body.offsetHeight) h=document.body.offsetheight;
else if (window.innerHeight) h=window.innerHeight;

...funktioniert natürlich auch nicht, weil FireFox ja glaubt, er kenne
offsetHeight, nur den falschen Wert liefert.
DAnkbar für Ratschläge
Billy

  1. Hi there,

    Jürgen schlägt vor, die Anzeigenhöhe über offsetHeight zu ermitteln, so wie in diesem Artikel in SELFHTML beschrieben:

    ohne Browserweiche wirst da nicht weit kommen; das dazu nötige all-object wird von nicht IE-Browsern bestenfalls halbherzig unterstützt. Die Höhe von Mozilla und Firefoxviewports ermittelst Du am besten mit window.innerHeight ...

    1. Hallo Klawischnigg,

      ohne Browserweiche wirst da nicht weit kommen; das dazu nötige all-object wird von nicht IE-Browsern bestenfalls halbherzig unterstützt. Die Höhe von Mozilla und Firefoxviewports ermittelst Du am besten mit window.innerHeight ...

      Das halte ich für ein Gerücht, dass man dazu das All-Objekt benötigt:

        
      var winHeight = window.innerHeight || document.body.offsetHeight;  
      
      

      Und so spannend ist diese Browserweiche ja auch nicht.

      Gruß Gernot

      1. Hi there,

        Das halte ich für ein Gerücht, dass man dazu das All-Objekt benötigt:

        In diesem Zusammenhang eine nahezu sozialphilosophiosche Frage:

        Verbreiten sich Gerüchte schneller, wenn Sie wahr sind?

        http://de.selfhtml.org/javascript/objekte/all.htm#offset_height

        Und so spannend ist diese Browserweiche ja auch nicht.

        ich vermag mich nicht zu erinnern, in den letzten 10 Jahren die Begriffe "Browserweiche" und "spannend" je in einem Zusammenhang erwähnt zu haben ;)

      2. Hallo,

        Das halte ich für ein Gerücht, dass man dazu das All-Objekt benötigt:

        var winHeight = window.innerHeight || document.body.offsetHeight;

        Was hat aber die Höhe des BODY-Elements mit der Höhe des Viewports zu tun?  
          
        viele Grüße  
          
        Axel
        
        1. Hallo,

          Was hat aber die Höhe des BODY-Elements mit der Höhe des Viewports zu tun?

          flöt

          Mathias

      3. Hallo Gernot,

        bist du sicher, dass du nicht ein '|' zuviel eingeschmuggelt hast?

        var winHeight = window.innerHeight || document.body.offsetHeight;

        Das doppelte '||' ist ein boolsches Oder, oder nicht?
        Mit deiner Anweisung fragst du also nur ab, ob window.innerHeight oder document.body.offsetHeight existiert (oder beide). Den tatsächlichen Wert, den dein Variablenname winHeight suggeriert, hast du damit aber nicht.

        Schönen Abend noch,
         Martin

        --
        Computer lösen für uns Probleme, die wir ohne sie gar nicht hätten.
        1. Hallo Martin,

          var winHeight = window.innerHeight || document.body.offsetHeight;

          Das doppelte '||' ist ein boolsches Oder, oder nicht?
          Mit deiner Anweisung fragst du also nur ab, ob window.innerHeight oder document.body.offsetHeight existiert (oder beide). Den tatsächlichen Wert, den dein Variablenname winHeight suggeriert, hast du damit aber nicht.

          Probier es doch mal aus!

          Das geht ja ganz schnell, indem du das mal als
          javascript:alert(winHeight = window.innerHeight || document.body.offsetHeight)
          in die Adresszeile tippst.

          Gruß Gernot

          1. Hi there,

            Das geht ja ganz schnell, indem du das mal als
            javascript:alert(winHeight = window.innerHeight || document.body.offsetHeight)
            in die Adresszeile tippst.

            Ja, aber nur, weil Du dann schon ein body-Object hast, wenn Du das tippst; im Head-Bereich bekommst Du damit mit dem IE klarerweise nur eine Fehlermeldung. Die Höhe des Bodyobjects != Höhe Viewport...

            1. Hallo Klawischnigg,

              Ja, aber nur, weil Du dann schon ein body-Object hast, wenn Du das tippst; im Head-Bereich bekommst Du damit mit dem IE klarerweise nur eine Fehlermeldung. Die Höhe des Bodyobjects != Höhe Viewport...

              Natürlich muss das mit Rücksicht auf den IE im Headbereich innerhalb einer Funktion aufgerufen werden, wenn das Dokument geladen ist.

              Dass das vom Doctype abhängt, ob diese Werte sich annähernd entsprechen, dazu hat Molily ja schon was gepostet.

              Gruß Gernot

        2. Hallo,

          Das doppelte '||' ist ein boolsches Oder, oder nicht?
          Mit deiner Anweisung fragst du also nur ab, ob window.innerHeight oder document.body.offsetHeight existiert (oder beide). Den tatsächlichen Wert, den dein Variablenname winHeight suggeriert, hast du damit aber nicht.

          arg1 || arg2 liefert nicht true oder false, sondern das Argument, was in Boolean umgewandelt true ergibt (kann sein, dass es komplizierter ist, ich bin bisher mit dieser Definition zurechtgekommen, man kann es gerne nachschlagen).

          Mathias

          1. Hi,

            arg1 || arg2 liefert nicht true oder false, [...] nachschlagen).

            auweia, das ist ja ein Durcheinander!
            Also, wenn ich es richtig verstanden habe, ist

            a || b  = a, wenn boolean(a) true ergibt,
             sonst   = b

            Daraus folgt aber zu meinem Entsetzen, dass nicht notwendigerweise
             (a || b) == (b || a)
            gilt. Oh je...
            Ich wende unbewusst immer wieder die vergleichsweise sauberen Syntax- und Auswerteregeln von C an und falle damit bei JS immer mal wieder auf die Schnauze.

            So long,
             Martin

            --
            Faulheit ist, mit dem Cocktailshaker in der Hand auf das nächste Erdbeben zu warten.
            1. Daraus folgt aber zu meinem Entsetzen, dass nicht notwendigerweise
              (a || b) == (b || a)
              gilt. Oh je...

              Es kommt halt darauf an, was du haben willst.

              a oder b als Vergleich (z.b. in einer if Abfrage) heißt ja nur das du einen wahren oder unwahren Ausdruck haben willst, wenn du aber das Ergebniss von a oder b zuweisen möchterst, ist die Reihenfolge insofern relevant das a oder b heißt, du willst den Wert von a haben, wenn dort aber keiner steht nimmst du b (quasi als Defaultwert). Bei b || a ist es umgekehrt.

              Ich wende unbewusst immer wieder die vergleichsweise sauberen Syntax- und Auswerteregeln von C an und falle damit bei JS immer mal wieder auf die Schnauze.

              Ich hab das jetzt nicht in Erinnerung wie das in anderen Programmiersprachen ist, aber in Perl z.b. geht das genauso.

              Struppi.

          2. Hallo molily,

            arg1 || arg2 liefert nicht true oder false, sondern das Argument, was in Boolean umgewandelt true ergibt (kann sein, dass es komplizierter ist,

            scheint zu stimmen:

            javascript:alert(0||1)

            Gruß Gernot