Ответ 1
Вы можете получить его, используя:
var b = document.body.getBoundingClientRect();
alert((b.right - b.left)/document.body.clientWidth);
Большое спасибо @niclasnorgren!
В Internet Explorer 7 некоторые свойства (координаты мыши) рассматриваются как физические, а другие - логические (смещение). Это по существу требовало, чтобы веб-разработчики знали или вычисляли состояние масштабирования. В версии IE8 все свойства являются логическими.
Вы можете получить его, используя:
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%).
В принятом ответе есть небольшая синтаксическая ошибка (тело вместо document.body). Это, похоже, тоже делает трюк.
var rect = document.body.getBoundingClientRect();
var zoomLevel = Math.round((rect.right-rect.left)/document.body.clientWidth * 100);
Я разместил решение для этого на другом сообщении, которое вы можете получить здесь. который также будет работать в IE7.
Автоматическое определение разрешения экрана и изменение масштаба браузера с помощью 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>