JavaScript Fensterbreite auslesen bei Zoom

WhiteShark

Admiral
Registriert
Mai 2002
Beiträge
9.949
Nabend,

ich entwickle gerade eine Webapp und sitze vor einem größerem Problem.
Ich habe derzeit Buttons die fixed oben positioniert sind, bzw über Javascript nach dem Scrollen wieder passend nachpositioniert werden.
Das funktioniert soweit problemlos. Aber wenn der User nun ranzoomt, werden die Buttons auch vergrößert und verdecken dann den Content.
Und dem will ich nun entgegen wirken.

In der Theorie eigentlich ganz einfach. Bei Laden der Seite die aktuelle Breite des Bodys auslesen und zwischenspeichern, Resize-Event abfangen und neue Body-Breite auslesen. Anhand alter und neuer Breite dann den Zoomfaktor errechnen und die Buttons entsprechend über CSS-Transform-Scale runterskalieren.

Allerdings bin ich dabei auf ein Problem gestossen. Manche Browser speichern leider den Zoomfaktor und laden die Seite bereits gezoomt.
Daher bekomme ich als Startwert schon den falschen Wert und die Buttons werden dadurch dann kleiner als sie werden sollen.

Egal was ich mache, ich bekomme weder die korrekte Fenstergröße, noch die Bildschirmgröße heraus. Ob ich nun screen.height, body.offsetWidth, win.innerWidth, screen.availHeight oder sonstwas nehme, alle liefern mir einen errechneten Wert mit dem ich nichts anfangen kann.
Auch den Zoomfaktor bekomme ich nicht heraus (aus dem könnte ich ja dann die echte Breite errechnen).

Aber vielleicht gibt es ja hier einen guten Webentwickler, der mir bei dem Problem helfen kann.

Danke schonmal
 
Das Problem tritt leider in allen Browsern auf (Android, iOS, Firefox, Chrome, Safari, usw).
Ich leite onresize auf eine Funktion um. Aber das spielt weniger eine Rolle. Ich habe auch schon eine Testseite gebaut gehabt, die direkt die Werte ausgibt. Auch da geben die Browser wenn gezoomt ist falsche Werte aus.
 
Das Onresize-Event bekomme ich ja ohne weiteres abgefangen, das ist kein Problem.
Nur wenn man die Seite bereits gezoomt betritt, bekomme ich einen falschen Startwert und die Buttons sind dann auch schon gezoomt.
Ich brauch daher entweder die Fensterbreite, den Zoomfaktor, oder zur Not auch die Bildschrimauflösung (ist ja für Mobile, d.h. Browser ist immer im Vollbild).
Letzteres sollte eigentlich die Bildschirmbreite ausliefern. Aber wenn man bspw 1024 hat und die Seite zoomt, liefert screen.width einen anderen Wert.
 
Zurück
Oben