Internet Explorer 7의 일부 속성 (마우스 좌표)은 물리적 인 것으로 취급되지만 다른 항목은 논리적 (오프셋)으로 취급됩니다. 이것은 기본적으로 웹 개발자가 줌 상태를 인식하거나 계산할 것을 요구했습니다. IE8 릴리스에서는 모든 속성이 논리적입니다.Internet Explorer 7에서 확대/축소 수준을 얻는 방법은 무엇입니까? (자바 스크립트)
13
A
답변
10
당신은 사용하여 얻을 수 있습니다 :
var b = document.body.getBoundingClientRect();
alert((b.right - b.left)/document.body.clientWidth);
덕분에 많은 @niclasnorgren을!
8
또한 IE 8을 체크인해야 할 경우 window.screen.deviceXDPI 및 window.screen.deviceYDPI를 사용할 수 있습니다. 기본값은 96 dpi이고 확대 된 경우 숫자는 더 커집니다 (150 % 확대했을 때 일명 144)
4
허용되는 대답에 작은 구문 오류 (document.body 대신 본문)가 있습니다. 이것은 또한 트릭을 할 것으로 보인다.
var rect = document.body.getBoundingClientRect();
var zoomLevel = Math.round((rect.right-rect.left)/document.body.clientWidth * 100);
0
다른 게시물에 대한 해결책을 게시했습니다. 여기에서 확인할 수 있습니다. IE7에서도 작동합니다.
Auto-detect a screen resolution and change browser zoom with Javascript?
This will help to detect browser zoom tested on all browser
<script>
window.utility = function(utility){
utility.screen = {
rtime : new Date(1, 1, 2000, 12,00,00),
timeout : false,
delta : 200
};
utility.getBrowser = function(){
var $b = $.browser;
$.extend(utility.screen,$.browser);
utility.screen.isZoomed = false;
var screen = utility.screen;
screen.zoomf = screen.zoom = 1;
screen.width = window.screen.width;
screen.height = window.screen.height;
if($b.mozilla){ //FOR MOZILLA
screen.isZoomed = window.matchMedia('(max--moz-device-pixel-ratio:0.99), (min--moz-device-pixel-ratio:1.01)').matches;
} else {
if($b.chrome){ //FOR CHROME
screen.zoom = (window.outerWidth - 8)/window.innerWidth;
screen.isZoomed = (screen.zoom < .98 || screen.zoom > 1.02)
} else if($b.msie){//FOR IE7,IE8,IE9
var _screen = document.frames.screen;
screen.zoom = ((((_screen.deviceXDPI/_screen.systemXDPI) * 100 + 0.9).toFixed())/100);
screen.isZoomed = (screen.zoom < .98 || screen.zoom > 1.02);
if(screen.isZoomed) screen.zoomf = screen.zoom;
screen.width = window.screen.width*screen.zoomf;
screen.height = window.screen.height*screen.zoomf;
}
}
return utility.screen;
};
window.onresize = function(e){
utility.screen.rtime = new Date();
if (utility.screen.timeout === false) {
utility.screen.timeout = true;
setTimeout(window.resizeend, utility.screen.delta);
}
};
window.resizeend = function() {
if (new Date() - utility.screen.rtime < utility.screen.delta) {
setTimeout(window.resizeend, utility.screen.delta);
} else {
utility.screen.timeout = false;
utility.screen = utility.getBrowser();
if(window.onresizeend) window.onresizeend (utility.screen);
if(utility.onResize) utility.onResize(utility.screen);
}
};
window.onresizeend = function(screen){
if(screen.isZoomed)
$('body').text('zoom is not 100%');
else{
$('body').text('zoom is 100% & browser resolution is'+[screen.width+'X'+screen.height]);
}
};
$(document).ready(function(){
window.onresize();
});
return utility;
}({});
</script>
도 참조 http://stackoverflow.com/questions/1713771/how-to-detect-page-zoom-level-in-all-modern-browsers – ripper234