JavaScript screen.width & IE

GrambleX

Lt. Commander
Registriert
Dez. 2006
Beiträge
1.512
Hallo, ich möchte die Bildschirmbreite auslesen, dazu folgender Code:

HTML:
<!DOCTYPE html>
<html  xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    </head>
    <body> 
    	<script type="text/javascript"> 
			alert(screen.width);
		</script>
	</body>
</html>

Funktioniert im Firefox, Opera, Chrome und im Safari. Im MS Internet Explorer 10 natürlich nicht. Meine Bildschirmbreite beträgt 1600px, der Internet Explorer gibt mir (unabhängig von der Fernstergröße) 1067px aus. In erster Linie interessiert mich, wieso das nicht funktioniert. Natürlich wäre auch ne alternative Lösung interessant, danach habe ich jedoch selbst noch nicht gesucht -> möchte eigentlich erstmal wissen, was der IE da anders macht.

Vielen Dank schonmal für die Antworten!
 
Der IE10 hat Standardmäßig einen Zoom(125%) der mit einberechnet wird. Das macht imo nur der IE und FF.

Edit: im IE sollte das gehen document.body.style.zoom = "100%"
 
Zuletzt bearbeitet:
Also FF funktioniert ja perfekt.

Beim IE liegt es tatsächlich am Zoom, der beim IE10 bei mir standardmäßig auf 150% gestellt war. Stelle ich den Zoom auf 100% funktioniert das Skript wie in allen anderen Browsern, jedoch habe ich noch keine Möglichkeit gefunden per Skript den Zoom auf 100% zu stellen. Mit verschiedenen Varianten (u.A. dein Codeschnipsel) kann ich zwar ganz normal Zoomen, jedoch tangiert das nicht den Seitenzoom des Internet Explorers und die Ausgabe bleibt fehlerhaft.
Mir fällt jetzt nicht ein, wie ich so eine Browsereinstellung überprüfen könnte, geschweige denn beeinflussen. Allerdings habe ich jetzt mal mit dem IE10 bisschen rumgesurft und muss sagen, dass dieser Zoom wirklich überall für eine unglaublich miese Bildqualität sorgt. Kann denn jemand bestätigen, dass der Seitenzoom beim IE10 (oben rechts->Einstellungen->Zoom) standardmäßig auf 150% steht? Ich hatte hier eine frische Installation auf Win7 64bit.
 
Ich weis leider nicht genau was du machen möchtest, eventuell Breakpoints?

window.innerWidth gibt die tatsächliche Breite des Browserfensters.

Etwas moderner im if Statement: window.matchMedia("(min-width: 1680)").matches
 
Ich möchte die Bildschirmauflösung des Users. Ob man mein "Problem" jetzt auch grundsätzlich anders lösen könnte, möchte ich mal nicht diskutieren - beim Thema Responsive Design tritt man momentan ja gerne mal einen Glaubenskrieg los. ;)

Habe mich jetzt mal bei Microsoft schlau gemacht: screen object (Internet Explorer)

systemXDPI - Gets the number of horizontal dpi of display resolution at normal zoom level.

Hörte sich zuerst sehr gut an. Gibt bei mir (bei 125% Zoom) 96 aus. Die selbe Ausgabe bekomme ich bei logicalXDPI. Bei deviceXDPI bekomme ich allerdings 120dpi aus. Also gibt wohl nur deviceXDPI die "wirkliche" DPI-Zahl aus und systemXDPI ist entgegen der Microsoft-Doku (siehe Zitat oben) wohl doch nicht auf die DPI-Zahl bei 100% Zoom bezogen.
Auf jeden Fall kann aus diesem Verhältnis die Bildschirmbreite in Pixel, vom Seitenzoom beseitigt, ausgelesen werden:

HTML:
 (screen.deviceXDPI/screen.systemXDPI)*screen.width

Im IE 10 funktioniert das, wobei bei 150% Zoom 1600.5 ausgegeben wird. Tests mit älteren IEs und anderen Displaygrößen stehen noch aus.
 
Zuletzt bearbeitet:
Zurück
Oben