Как получить уровень масштабирования в Internet Explorer 7? (JavaScript)

В Internet Explorer 7 некоторые свойства (координаты мыши) рассматриваются как физические, а другие - логические (смещение). Это по существу требовало, чтобы веб-разработчики знали или вычисляли состояние масштабирования. В версии IE8 все свойства являются логическими.

Ответ 1

Вы можете получить его, используя:

var b = document.body.getBoundingClientRect();    
alert((b.right - b.left)/document.body.clientWidth);

Большое спасибо @niclasnorgren!

Ответ 2

Кроме того, если вам нужно выполнить проверку в IE 8, вы можете использовать window.screen.deviceXDPI и window.screen.deviceYDPI. Значение по умолчанию - 96 точек на дюйм, и если вы увеличены, число будет больше (или 144 при увеличении на 150%).

Ответ 3

В принятом ответе есть небольшая синтаксическая ошибка (тело вместо document.body). Это, похоже, тоже делает трюк.

var rect = document.body.getBoundingClientRect(); 
var zoomLevel = Math.round((rect.right-rect.left)/document.body.clientWidth * 100); 

Ответ 4

Я разместил решение для этого на другом сообщении, которое вы можете получить здесь. который также будет работать в 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>

Demo