Höhe und Breite eines Frames auslesen
Stefan Welscher
- javascript
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....
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