Supportnet Computer
Planet of Tech

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

siehe hier


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.
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

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


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

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






Antwort 7 von meister99

@ ALL

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.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: