Supportnet / Forum / Webseiten/HTML
Fensterbreite unter Mozilla erkennen
Frage
Hallo,
unter IE kann ich mit Javascript die aktuelle Fensterbreite problemlos mit document.getElementsByTagName ('body')[0].offsetWidth abfragen. Mozilla FireFox 0.8 und Netscape 7.0 kennen zwar das Objekt, liefern aber 0. Wer hat eine Lösung?
Gruß
Manfred
Antwort 1 von ThomasOOP
Antwort 2 von Dr.Ma-Busen
Moin!
offsetWidth geht laut selfHTML nur im IE.
Die gröse des Fensters über body zu ermitteln ist eh nicht gut, verpasse mal den body mit css eine Rahmen und schau dir das dann mal in verschiedenen Browsern an. Du wirst dich wundern wo sich der Rahmen beim IE und z.B. bei Mozilla befindet bzw. zu sehen ist.
Versuch es mal mit innerWidth und clientWidth (Dazu habe ich bei selfHTML seltsamer weise keine Information drüber gefunden)
Hie ist mal eine kleine Funktion die, die größe des Anzeigebereiches des Browserfenster ermittelt. Die Funktion gibt ein Objekt mit den Werten zurück.
Hier noch ein beispiel wie du die Funktion aufrust und an die Information kommst.
var size = getWinSize();
alert("Breite:" + size.w + " - Höhe:" + size.h);
MfG
Dr. Ma-Busen
offsetWidth geht laut selfHTML nur im IE.
Die gröse des Fensters über body zu ermitteln ist eh nicht gut, verpasse mal den body mit css eine Rahmen und schau dir das dann mal in verschiedenen Browsern an. Du wirst dich wundern wo sich der Rahmen beim IE und z.B. bei Mozilla befindet bzw. zu sehen ist.
Versuch es mal mit innerWidth und clientWidth (Dazu habe ich bei selfHTML seltsamer weise keine Information drüber gefunden)
Hie ist mal eine kleine Funktion die, die größe des Anzeigebereiches des Browserfenster ermittelt. Die Funktion gibt ein Objekt mit den Werten zurück.
function getWinSize(){
win = window;
var pos = {x:0,y:0};
if(typeof win.innerWidth != 'undefined'){
pos.w = win.innerWidth;
pos.h = win.innerHeight;
}else if(win.document.body){
pos.w = parseInt(win.document.body.clientWidth);
pos.h = parseInt(win.document.body.clientHeight);
}
return pos;
}Hier noch ein beispiel wie du die Funktion aufrust und an die Information kommst.
var size = getWinSize();
alert("Breite:" + size.w + " - Höhe:" + size.h);
MfG
Dr. Ma-Busen
Antwort 3 von Friedel
Ich mache sowas mit
Wichtig ist, dass die Grße erst ermittelt wird, wenn der Body vollständig geladen ist. Deshalb:
var fb; //Fensterbreite
var fh; //Fensterhoehe
function init() {
if (document.body.offsetWidth) fb =document.body.offsetWidth;
if (window.innerWidth) fb =window.innerWidth;
if (document.body.offsetHeight) fh =document.body.offsetHeight;
if (window.innerHeight) fh =window.innerHeight;
};
Wichtig ist, dass die Grße erst ermittelt wird, wenn der Body vollständig geladen ist. Deshalb:
<body onLoad="init()">
Antwort 4 von abschweb
Hallo Dr. Ma-Busen,
die Lösung hat es sofort gebracht! Danke!!!
Sowohl window.innerWidth als auch window.document.body.clientWidth funktionieren allerdings nicht im IE, so bleib ich für den IE bei meiner alten Lösung.
Gruß
Manfred
die Lösung hat es sofort gebracht! Danke!!!
Sowohl window.innerWidth als auch window.document.body.clientWidth funktionieren allerdings nicht im IE, so bleib ich für den IE bei meiner alten Lösung.
Gruß
Manfred
Antwort 5 von Dr.Ma-Busen
Hm, das ist seltsam das die nicht im IE gehen
Ok, vielleicht steht das bei selfHTML & Co nicht, dass das für den IE geht. Aber das Script was ist witer oben genannt habe geht im IE, ich habe das bevor ich das hier gepostet habe im IE und Mozilla Getestet und da lief es ohne Probleme.
MfG
Dr. Ma-Busen
Ok, vielleicht steht das bei selfHTML & Co nicht, dass das für den IE geht. Aber das Script was ist witer oben genannt habe geht im IE, ich habe das bevor ich das hier gepostet habe im IE und Mozilla Getestet und da lief es ohne Probleme.
MfG
Dr. Ma-Busen
Antwort 6 von abschweb
Hallo Dr.Ma-Busen,
ich habs nochmal im IE getestet,
innerWidth funktioniert nicht,
document.body.clientWidth funktioniert tatsächlich.
Gruß
Manfred
ich habs nochmal im IE getestet,
innerWidth funktioniert nicht,
document.body.clientWidth funktioniert tatsächlich.
Gruß
Manfred
Antwort 7 von meister99
@ ALL
Man Programmiert keine Fensterweichen Mehr, man macht dies mit einer Tabelle die immer 100% in der Breite hat !!!
MfG
Man Programmiert keine Fensterweichen Mehr, man macht dies mit einer Tabelle die immer 100% in der Breite hat !!!
MfG
Antwort 8 von rfb
@meister99:
Man Programmiert keine Layout-Tabellen Mehr, man macht dies mit positionierten DIVs und gibt denen möglichst Breiten in %-Angaben zur Gesamtbreite.
Und Frau auch ...
Layout-Tabellen sind in der 4er-Browser-Generation unabdingbar gewesen, aber indessen sollten wir im Interesse von Accessibility und Barrierefreiheit möglichst darauf verzichten.
Man Programmiert keine Layout-Tabellen Mehr, man macht dies mit positionierten DIVs und gibt denen möglichst Breiten in %-Angaben zur Gesamtbreite.
Und Frau auch ...
Layout-Tabellen sind in der 4er-Browser-Generation unabdingbar gewesen, aber indessen sollten wir im Interesse von Accessibility und Barrierefreiheit möglichst darauf verzichten.

