Kym Erdmann: iframe

Hallo.

Vorweg erstmal der Hinweis, daß ich kein Super-Programmierer bin. Sonst hätte ich folgendes Problem wohl gelöst.

Meine Seite beinhaltet einen iframe mit dem namen "inhalt" und folgendes script soll die Größe des iframe an die Höhe des Browserfensters anpassen.

resize_iframe();
}

function resize_iframe()
{
  fenster_ho = document.body.clientHeight;
  document.all.inhalt.height = fenster_ho - 303;
  window.setTimeout("resize_iframe()",1000);
}

Funktioniert leider aber nicht in allen Browsern. Kann man das noch hinkriegen?
Kleine Zusatzfrage: Beim Explorer ist beim iframe immer ein horizontaler "Ghost"-Scrollbalken. Geht der irgendwie weg?

Über Hilfe würd' ich mich sehr freuen.

Grüße, Kym

  1. Hallo Kym,

    resize_iframe();
    }

    Ich hoffe, dass die schließende Klammer darauf hindeutet, dass der Aufruf der Funktion "resize_iframe()" hier seinerseits aus einer Funktion heraus erfolgt und nicht etwa, bevor die entsprechende Funktion überhaupt definiert ist, denn sonst hättest du in _allen Browsern ein Problem.

    function resize_iframe()
    {
      fenster_ho = document.body.clientHeight;
      document.all.inhalt.height = fenster_ho - 303;
      window.setTimeout("resize_iframe()",1000);
    }

    Funktioniert leider aber nicht in allen Browsern. Kann man das noch hinkriegen?

    Ich hoffe, dein Iframe hat auch ein entsprechendes ID-Attribut und nicht etwa nur ein Name-Attribut...

    Du verwendest das all-Objekt. Versuche es stattdessen mal mit document.getElementById. Die Methode verstehen alle modernen Browser und nur einige wenige ältere nicht. Mit einer Kombination aus beidem könntest du noch mehr Browser erfassen, die dein Skript umsetzen.

    Ein weiteres Problem könnte document.body.clientHeight sein. Da könntest du stattdessen mal window.innerHeight probieren. das machst du dann am besten mit jeweils mit einer if-Abfrage, ob der Browser das Objekt/ die Methode/ die Eigenschaft versteht. Also:

      
    if (document.all) {  
      //deine Anweisungen  
    } else {  
      //Anweisungen  
    }  
      
    if (window.innerHeight) {  
      //Anweisungen  
    } else {  
      //Anweisungen  
    }  
    
    

    Für die Fenstergrößenüberwachung gibt es auch elegantere Methoden als eine sich in einem Timeout ständig selbst aufrufende Funktion:

    http://de.selfhtml.org/javascript/beispiele/fensterueberwachen.htm

    In oben verlinktem Beispiel findest du übrigens auch schön demonstriert, wie man die Fenstergröße ausliest.

    Die Frage ist aber, ob du überhaupt Javascript brauchst, oder ob du für deinen Iframe nicht auch einfach eine gewisse prozentuale Höhe des Elternelements über CSS definieren könntest. Warum willst du unter dem Iframe genau 303 Pixel Platz reservieren? Soll da noch etwas anderes angezeigt werden, das genau so viel Platz braucht und immer unten stehen bleiben soll?

    Auch dafür gibt es auch andere Lösungen, die dann sogar bei ausgeschaltetem JS funktionieren:

    http://aktuell.de.selfhtml.org/tippstricks/css/footer/index.htm

    Kleine Zusatzfrage: Beim Explorer ist beim iframe immer ein horizontaler "Ghost"-Scrollbalken. Geht der irgendwie weg?

    Ich weiß nicht genau, was du unter einem "Ghost"-Scrollbalken verstehst, wenn es ein solcher sein sollte, bei dem überhaupt kein Schieberegler zu sehen ist, sondern nur die "Schiene" (IE macht so etwas manchmal), dann hilft vielleicht schon ein html, body {overflow:auto} in deinem im Iframe eingebundene Dokument. Ansonsten studiere doch auch mal den Artikel von Elya:

    http://aktuell.de.selfhtml.org/tippstricks/html/scrollbalken/index.htm

    Gruß Gernot

    1. Hallo Gernot.

      Vielen vielen DANK für all die Vorschläge. Muß ich erstmal alles studieren, aber es scheint als ob es sehr gute Tipps sind.
      Der Tipp zum "ghost"-Balken (ohne Regler) hat schonmal funktioniert. Vielen Dank.

      Grüße

      Kym