.Markus: iframe Höhe an Content anpassen

Hallo zusammen,

ich möchte die Höhe eines iframes dynamisch an die Höhe seines Contents anpassen. Das klappt mit folgendem Code auch ganz gut:

  
function dyniframesize() {  
  var dyniframe = document.getElementById("myHelp");  
  dyniframe.style.display="block"  
  dyniframe.height = dyniframe.Document.body.scrollHeight;  
}  
  
window.attachEvent("onload", dyniframesize);  

Dieser Code ist ausschließlich für den IE gedacht, andere Browser müssen nicht unterstützt werden.

Meine Frage bzw. mein Problem. Ich möchte ohne die Inhaltseiten des iframes zu bearbeiten, die Höhe auch dann erneut automatisch anpassen, wenn man IM iframe einen Link klickt.

Ist dies Möglich oder nicht?

Vielen Dank für eure Hilfe.

Gruss,

Markus

  1. Hallo Markus,

    Dieser Code ist ausschließlich für den IE gedacht, andere Browser müssen nicht unterstützt werden.

    Warum denn so bescheiden? Das geht durchaus auch ohne größeren Aufwand browserübergreifend.

    Meine Frage bzw. mein Problem. Ich möchte ohne die Inhaltseiten des iframes zu bearbeiten, die Höhe auch dann erneut automatisch anpassen, wenn man IM iframe einen Link klickt.

    Ist dies Möglich oder nicht?

    Solange du dich auf derselben Domain bewegst, und nicht etwa versuchst, den Iframe in der Höhe anzupassen an eine in ihm geladene verlinkte Seite von einer anderen Domain als der Seite, in der der Iframe eingebunden ist, geht das!

    Hier mein an dieser Stelle schon häufig gepostetetes Beispiel, bei dem ich allerdings gar nicht erst versuche, die offset- oder scrollHeight des BODY-Elementes des im Iframe eingebundenen Dokuments auszulesen, sondern jeweils die offsetHeight eines im BODY als einziges direktes Kind enthaltenen, alles umschließenden DIV-Containers.

    Irgendwie scheint das mit der Unterscheidung, wann man je nach Standardkompatibilität und je nach Browser zwischen document.documentElement und document.body einerseits und zwischen offsetHeight bzw. innerHeight andererseits unterscheiden sollte, auch nicht mehr so zu funktionieren.

    Ich frage mich hier selbst, ob diesbezüglich wohl in letzter Zeit die Standards geändert wurden.

    Selbst die entsprechende Quirksmode.org-Seite zu diesem Thema, die ich früher dazu immer zu Rate gezogen habe, gibt es nicht mehr.

    Gruß Gernot

    1. Dieser Code ist ausschließlich für den IE gedacht, andere Browser müssen nicht unterstützt werden.

      Warum denn so bescheiden? Das geht durchaus auch ohne größeren Aufwand browserübergreifend.

      Die Anwendung wird ausschließlich im IE laufen.

      Hier mein an dieser Stelle schon häufig gepostetetes Beispiel, bei dem ich allerdings gar nicht erst versuche, die offset- oder scrollHeight des BODY-Elementes des im Iframe eingebundenen Dokuments auszulesen, sondern jeweils die offsetHeight eines im BODY als einziges direktes Kind enthaltenen, alles umschließenden DIV-Containers.

      Das ist für mich leider nicht praktikabel, da der Aufbau der Seiten im iFrame nicht einheitlich ist und es somit kein solches div-Element gibt. Die Seiten können zudem nicht bearbeitet werden.

      Eine Mischung aus deinem Vorschlag und meinem alten Code tut nun seine Arbeit:

        
      <script type="text/javascript" language="JavaScript">  
        function setHeight() {  
          var dyniframe = document.getElementById("benefits");  
          dyniframe.style.display="block";  
          dyniframe.height = dyniframe.Document.body.scrollHeight;  
        }  
      </script>  
      
      

      Dieser Code wird durch die onLoad-Methode des iFrames ausgelöst. Letzlich war also nur das der Haken :-).

      Danke für deinen Denkanstoss.

      Gruss,

      Markus