birdy: Problem mit IE7 und javascript II

Hallo zusammen

ich habe ein (zumindest symptomatisch) ähnliches Problem wie Frank:
Ich versuche mit einem onLoad-Event die Höhe eine div-Elementes nachträglich an die Fenstergrösse anzupassen. Die Grösse des div ist per css auf 460px voreingestellt. Den Code den ich dazu verwende habe ich mehr oder weniger aus SELFHTML kopiert:

  
window.onresize = setHeight; // Das ist zusätzlich zum onLoad-Event  
  
function Fensterhoehe()  
{ // Quelle selfHTML  
 if (window.innerHeight) { return window.innerHeight; }  
 else if (document.body && document.body.offsetHeight) { return document.body.offsetHeight; }  
 else { return 0; }  
}  
  
function setHeight()  
{  
 var hoehe = (Fensterhoehe() - 210);  
 if (window.document.all)  
 {  
  window.document.all.main1.style.height = hoehe + "px";  
 }  
 else  
 {  
  window.document.getElementById("main1").style.height = hoehe + "px";  
 }  
}  

Der Code funktioniert mir Firefox und Safari wunderbar, aber IE7 gibt die Fehlermeldung "invalid argument" aus. Ich habe schon ein paar Variationen ausprobiert aber die Lösung noch nicht gefunden. Eigentlich sollte es ja nicht zu schwer sein..??

Da ich in anderen Beiträgen gelesen haben, dass es ein Problem sein könnte, dass IE den onLoad-Event zu früh auslöst, habe ich es auch mit window.setTimeout probiert und mit ganz an den Schluss setzen des Includes des Javascriptes, aber es hat leider nix genützt :-(

(Problemseite: http://harbinger.gs/index.php)

bin um jede Hilfe dankbar! :-)

Rolf

  1. Hi there,

    function setHeight()
    {
    var hoehe = (Fensterhoehe() - 210);
    window.document.getElementById("main1").style.height = hoehe + "px";
    }

    
    >   
      
    Hast Du es damit schon probiert? Der IE versteht das seit Version 5.0 ebenso...  
      
      
    
    
    1. Hi,

      was mich dabei noch interessiert ist, was meint er mit Javascript2.
      Habe ich da was verpasst, neue Version, neue Möglichkeiten?

      Paul

      1. Hi there,

        was mich dabei noch interessiert ist, was meint er mit Javascript2.

        Keine Ahnung. Ausserdem ist das ohnehin egal; Features einer aktuellen Javascriptversion (die, soweit ich weiss bei Geckobrowsern irgendwo zwischen 1.7 und 1.9 liegt) zu verwenden ist der erste und einfachste Schritt zum Einhandeln von Problemen...

      2. Moin,

        was mich dabei noch interessiert ist, was meint er mit Javascript2.

        II steht wohl für "das zweite". "birdy" bezieht sich offensichtlich auf die Ähnlichkeit seines Problems mit einem hier schon diskutierten.

        Grüße

        Swen

        1. Moin,

          was mich dabei noch interessiert ist, was meint er mit Javascript2.

          II steht wohl für "das zweite". "birdy" bezieht sich offensichtlich auf die Ähnlichkeit seines Problems mit einem hier schon diskutierten.

          Grüße

          Swen

          Richtig! ;-)

    2. Hi there,

      window.document.getElementById("main1").style.height = hoehe + "px";

      
      > >   
      >   
      > Hast Du es damit schon probiert? Der IE versteht das seit Version 5.0 ebenso...  
        
      Hallo,  
      ja, damit habe ich es auch versucht, und hat den selben Fehler gegeben.  
      Wobei gerade vorhin hat mir ein Freund geschrieben, dass es bei ihm so funktioniert, werde es also nochmals versuchen...  
        
      
  2. Hi,

    Der Code funktioniert mir Firefox und Safari wunderbar, aber IE7 gibt die Fehlermeldung "invalid argument" aus. Ich habe schon ein paar Variationen ausprobiert aber die Lösung noch nicht gefunden. Eigentlich sollte es ja nicht zu schwer sein..??

    IE löst den Fehler aus, wenn du einen negativen Wert für die Höhe oder Breite angibst.

    Da ich in anderen Beiträgen gelesen haben, dass es ein Problem sein könnte, dass IE den onLoad-Event zu früh auslöst,

    Du hast den Eventhandler auch am Resize Event.

    Fensterhoehe() scheint also 0 zurückzugeben.

    Kann daran liegen, dass IE das resize schon sehr früh auslöst, also evtl. auch schon beim Seitenladen, obwohl kein resize stattfand (und die höhe damit 0 ist), oder Fensterhoehe() falsch funktioniert.

    prüfe also mal ob Fensterhoehe() generell funkioniert (z.B. an einen Button-Klick hängen und das Ergebnis alerten)

    Ansonsten noch auf

    else if (document.documentElement && document.documentElement.offsetHeight) { return document.documentElement.offsetHeight; }

    prüfen.

    Gruß!

    1. Kann daran liegen, dass IE das resize schon sehr früh auslöst, also evtl.
      auch schon beim Seitenladen, obwohl kein resize stattfand (und die höhe
      damit 0 ist), oder Fensterhoehe() falsch funktioniert.

      Wie gesagt, habe ich diesen Fall abzufangen versucht, indem ich das Javascript erst ganz am Schluss des Dokumentes einfüge. Und auch mit dem Timeout habe ich es versucht...

      prüfe also mal ob Fensterhoehe() generell funkioniert (z.B. an einen
      Button-Klick hängen und das Ergebnis alerten)

      das habe ich natürlich gemacht, ich habe es nur aus den oben geposteten Code gelöscht ;-)
      der Dert von 'hoehe' ist normalerweise 250
      (250 = 460 - 210; das ist eigentlich nicht das gewünschte, aber das ist ein minor Problem, das ich dann löse, wenn der Rest funktioniert...)