В Internet Explorer 7 некоторые свойства (координаты мыши) рассматриваются как физические, в то время как другие являются логическими (смещение). Это по существу требовало, чтобы веб-разработчики знали или вычисляли состояние масштабирования. В версии IE8 все свойства логичны.Как получить уровень масштабирования в Internet Explorer 7? (javascript)
ответ
Вы можете получить его с помощью:
var b = document.body.getBoundingClientRect();
alert((b.right - b.left)/document.body.clientWidth);
Спасибо большое @niclasnorgren!
Кроме того, если вам нужно выполнить проверку в IE 8, вы можете использовать window.screen.deviceXDPI и window.screen.deviceYDPI. Значение по умолчанию - 96 точек на дюйм, и если вы увеличены, число будет больше (например, 144 при увеличении на 150%)
спасибо, это было именно то, что мне нужно было найти «коэффициент масштабирования» :-) – naivists
window.screen.deviceXDPI работает надежно в режимах эмуляции IE9 для IE8, IE7. Метод getBoundingClientRect() возвращает 100% во всех режимах масштабирования. – ddotsenko
Обратите внимание, что screen.deviceXDPI - это только IE, а не в Chrome. –
В принятом ответе есть небольшая синтаксическая ошибка (тело вместо document.body). Кажется, это тоже помогает.
var rect = document.body.getBoundingClientRect();
var zoomLevel = Math.round((rect.right-rect.left)/document.body.clientWidth * 100);
Я разместил решение для этого на другом сообщении, которое вы можете получить здесь. который также будет работать в 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