Stefan Welscher: Höhe und Breite eines Frames auslesen

Topic ist Programm. Habe schon verschiedenes Probiert, aber nicht funktioniert. Wie kann ich mit Javascript auslesen welche Höhe/Breite ein Frame hat?

Was ich bisher gefunden habe hat wie gesagt nicht geklappt:

parent.Banner.innerWidth;
document.body.clientWidth;
document.body.offsetWidth;

Hauptsälich sollte das Auslesen vom IE möglich sesin.
Im Idealfall natürlich auch vom Rest....

  1. Hallo Stefan,

    Kommt darauf an, wo das JavaScript ausgeführt wird. Zuerst musst Du das Frame-Objekt korrekt referenzieren, dazu liest Du Dir am besten http://aktuell.de.selfhtml.org/tippstricks/javascript/fensterzugriff/index.htm durch.

    Wenn Du das Frame-Objekt hast, kannst Du dann auf die jeweiligen Eigenschaften zugreifen. Nehmen wir mal Du willst das aktuelle Frame (self) nutzen - bei anderen Frames nimmst Du natürlich etwas anderes (siehe o.g. Artikel). Dann kannst Du Höhe / Breite so bestimmen:

    // damit der code möglichst wenig geändert werden muss  
    // wird hier am anfang der variable meinframe der richtige  
    // frame zugewiesen (hier: self)  
    // denkbar ist auch z.B.: var meinframe = parent.frames['bla']; o.ä.  
    var meinframe = self;  
    var hoehe = -1;  
    var breite = -1;  
      
    if (meinframe.innerWidth) {  
      // 1. methode: alle browser, die nicht IE sind  
      breite = meinframe.innerWidth;  
      hoehe = meinframe.innerHeight;  
    } else if (meinframe.document && meinframe.document.body &&  
               meinframe.document.body.innerWidth) {  
      // 2. methode: Sonderbehandlung für den IE  
      breite = meinframe.document.body.offsetWidth;  
      hoehe = meinframe.document.body.offsetHeight;  
    }  
      
    // jetzt steht in hoehe die Höhe und breite die Breite  
    // allerdings kann auch -1 drinstehen, wenn diese nicht  
    // feststellbar sind
    

    Nur noch als Hinweis: Die Methode für den Internet Explorer (document.body.offsetWidth auf das Frame-Objekt anwenden) liefert nur dann exakte ergebnisse, wenn im jeweiligen Frame die margin per CSS für body auf 0 gesetzt ist, sonst musst Du die margin noch 2x draufrechnen.

    Viele Grüße,
    Christian