Ede: Fehler im IE - warum?

Wieso gibt mir die folgende Funktion im IE6 einen fehler "Ungültiges Argument" zurück? IM Firefox klappt alles problemlos.

function Resize_Navigation(id) {
    var height;
    height = window.innerHeight-125;
 if (height<520) height=520;
 document.getElementById(id).style.height = height-20;
}

(Übergeben wird die ID eines DIVs)

  1. Grüße,
    weil IE kein "innerheight" kennt : http://de.selfhtml.org/javascript/objekte/window.htm#inner_height nutze die ketzerische iE sonderversion...
    MFG
    bleicher

    --
    __________________________-
    Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
    http://www.sexgott-or-not.com/?test=428054
    1. Super! Funktioniert! Dankeschön!

      Hier nochmal der Quelltext falls er jemanden interessiert (auch wenn man bei mir eher wenig lernen kann :-P )

      function Resize_Navigation(id) {
          var height;
       if (navigator.appName.indexOf("Explorer") != -1) {height = document.body.clientHeight;}
              else {height = window.innerHeight;}
          height = height-125;
       if (height<520) height=520;
       document.getElementById(id).style.height = height-20 + "px";
      }

      1. @@Ede:

        Hier nochmal der Quelltext falls er jemanden interessiert

        Allenfalls als schlechtes Beispiel imteressant.

        if (navigator.appName.indexOf("Explorer") != -1) {height = document.body.clientHeight;}
                else {height = window.innerHeight;}

        Nein! Frage einen Client nie nach dem Namen! Frage nach seinen Fähigkeiten!

        Was du willst, ist Folgendes:

        if (document.body.clientHeight)  
          var height = document.body.clientHeight;  
        else  
          var height = window.innerHeight;
        

        Das ließe sich auch http://de.selfhtml.org/javascript/sprache/bedingt.htm#entweder_oder@title=einfacher so schreiben:

        var height = (document.body.clientHeight ? document.body.clientHeight : window.innerHeight);

        Aber es geht noch besser: Für „nimm das erste, wenn es nicht falsch ist, sonst das zweite“ gibt es einen Operator: '||':

        var height = document.body.clientHeight || window.innerHeight;

        Live long and prosper,
        Gunnar

        --
        Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
        1. Hallo,

          danke für die wichtigen Anmerkungen!

          var height = document.body.clientHeight || window.innerHeight;

          So einfach ist das leider nicht. clientHeight ist uneindeutig je nach Rendermodus, liefert entweder die Viewport-Höhe (das, was gerade vom Dokument sichtbar ist) oder die Dokument-Höhe (das gesamte Dokument inklusive dem, was gerade durch Scrolling unsichtbar ist). Auf jeden Fall sollte man zuerst window.innerHeight abfragen, dann document.documentElement.clientHeight, erst dann document.body.clientHeight.
          Siehe z.B. http://www.howtocreate.co.uk/tutorials/javascript/browserwindow.

          Mathias

          1. So einfach ist das leider nicht. clientHeight ist uneindeutig je nach Rendermodus,

            eigentlich schon, ausser man versucht seinen browser absichtlich in den quirksmode zu bringen und hofft, dass die fehlerkorrektur des browsers besser ist als das eigene unvermögen halbwegs vernünftigen code zu schreiben

  2. Hallo,

    IM Firefox klappt alles problemlos.
    document.getElementById(id).style.height = height-20;

    spätestens bei dieser Zeile sollte dein Firefox dich aber mit einer Meldung in der Fehlerkonsole beglücken. Denn was du da zuweist, ist eine reine Zahl - und somit kein gültiger Wert für die CSS-Eigenschaft heigth. Die Zuweisung muss ignoriert werden.

    So long,
     Martin

    --
    Man soll den Tag nicht vor dem Abend loben.
    Und den Mann nicht vor dem Morgen.
      (alte Volksweisheit)
    1. spätestens bei dieser Zeile sollte dein Firefox dich aber mit einer Meldung in der Fehlerkonsole beglücken. Denn was du da zuweist, ist eine reine Zahl

      Danke, hab ich grade eben selber rausgefunden...
      Hat aber trotzdem funktioniert... ohne Fehlermeldung ;-)

      Das eigentliche Problem war das, das bleicher beschrieben hat

      1. Hi,

        spätestens bei dieser Zeile sollte dein Firefox dich aber mit einer Meldung in der Fehlerkonsole beglücken. Denn was du da zuweist, ist eine reine Zahl

        Danke, hab ich grade eben selber rausgefunden...
        Hat aber trotzdem funktioniert... ohne Fehlermeldung ;-)

        Dann solltest du deine Seite mal aus dem Quirks Mode holen.

        MfG ChrisB

        --
        "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."