How to detect page zoom level in all modern browsers?

后端 未结 28 2227
慢半拍i
慢半拍i 2020-11-21 05:27
  1. How can I detect the page zoom level in all modern browsers? While this thread tells how to do it in IE7 and IE8, I can\'t find a good cross-browser solution.

28条回答
  •  萌比男神i
    2020-11-21 05:54

    function supportFullCss3()
    {
        var div = document.createElement("div");
        div.style.display = 'flex';
        var s1 = div.style.display == 'flex';
        var s2 = 'perspective' in div.style;
    
        return (s1 && s2);
    };
    
    function getZoomLevel()
    {
        var screenPixelRatio = 0, zoomLevel = 0;
    
        if(window.devicePixelRatio && supportFullCss3())
            screenPixelRatio = window.devicePixelRatio;
        else if(window.screenX == '0')
            screenPixelRatio = (window.outerWidth - 8) / window.innerWidth;
        else
        {
            var scr = window.frames.screen;
            screenPixelRatio = scr.deviceXDPI / scr.systemXDPI;
        }
    
        //---------------------------------------
        if (screenPixelRatio <= .11){ //screenPixelRatio >= .01 &&
          zoomLevel = "-7";
        } else if (screenPixelRatio <= .25) {
          zoomLevel = "-6";
        }else if (screenPixelRatio <= .33) {
          zoomLevel = "-5.5";
        } else if (screenPixelRatio <= .40) {
          zoomLevel = "-5";
        } else if (screenPixelRatio <= .50) {
          zoomLevel = "-4";
        } else if (screenPixelRatio <= .67) {
          zoomLevel = "-3";
        } else if (screenPixelRatio <= .75) {
          zoomLevel = "-2";
        } else if (screenPixelRatio <= .85) {
          zoomLevel = "-1.5";
        } else if (screenPixelRatio <= .98) {
          zoomLevel = "-1";
        } else if (screenPixelRatio <= 1.03) {
          zoomLevel = "0";
        } else if (screenPixelRatio <= 1.12) {
          zoomLevel = "1";
        } else if (screenPixelRatio <= 1.2) {
          zoomLevel = "1.5";
        } else if (screenPixelRatio <= 1.3) {
          zoomLevel = "2";
        } else if (screenPixelRatio <= 1.4) {
          zoomLevel = "2.5";
        } else if (screenPixelRatio <= 1.5) {
          zoomLevel = "3";
        } else if (screenPixelRatio <= 1.6) {
          zoomLevel = "3.3";
        } else if (screenPixelRatio <= 1.7) {
          zoomLevel = "3.7";
        } else if (screenPixelRatio <= 1.8) {
          zoomLevel = "4";
        } else if (screenPixelRatio <= 1.9) {
          zoomLevel = "4.5";
        } else if (screenPixelRatio <= 2) {
          zoomLevel = "5";
        } else if (screenPixelRatio <= 2.1) {
          zoomLevel = "5.2";
        } else if (screenPixelRatio <= 2.2) {
          zoomLevel = "5.4";
        } else if (screenPixelRatio <= 2.3) {
          zoomLevel = "5.6";
        } else if (screenPixelRatio <= 2.4) {
          zoomLevel = "5.8";
        } else if (screenPixelRatio <= 2.5) {
          zoomLevel = "6";
        } else if (screenPixelRatio <= 2.6) {
          zoomLevel = "6.2";
        } else if (screenPixelRatio <= 2.7) {
          zoomLevel = "6.4";
        } else if (screenPixelRatio <= 2.8) {
          zoomLevel = "6.6";
        } else if (screenPixelRatio <= 2.9) {
          zoomLevel = "6.8";
        } else if (screenPixelRatio <= 3) {
          zoomLevel = "7";
        } else if (screenPixelRatio <= 3.1) {
          zoomLevel = "7.1";
        } else if (screenPixelRatio <= 3.2) {
          zoomLevel = "7.2";
        } else if (screenPixelRatio <= 3.3) {
          zoomLevel = "7.3";
        } else if (screenPixelRatio <= 3.4) {
          zoomLevel = "7.4";
        } else if (screenPixelRatio <= 3.5) {
          zoomLevel = "7.5";
        } else if (screenPixelRatio <= 3.6) {
          zoomLevel = "7.6";
        } else if (screenPixelRatio <= 3.7) {
          zoomLevel = "7.7";
        } else if (screenPixelRatio <= 3.8) {
          zoomLevel = "7.8";
        } else if (screenPixelRatio <= 3.9) {
          zoomLevel = "7.9";
        } else if (screenPixelRatio <= 4) {
          zoomLevel = "8";
        } else if (screenPixelRatio <= 4.1) {
          zoomLevel = "8.1";
        } else if (screenPixelRatio <= 4.2) {
          zoomLevel = "8.2";
        } else if (screenPixelRatio <= 4.3) {
          zoomLevel = "8.3";
        } else if (screenPixelRatio <= 4.4) {
          zoomLevel = "8.4";
        } else if (screenPixelRatio <= 4.5) {
          zoomLevel = "8.5";
        } else if (screenPixelRatio <= 4.6) {
          zoomLevel = "8.6";
        } else if (screenPixelRatio <= 4.7) {
          zoomLevel = "8.7";
        } else if (screenPixelRatio <= 4.8) {
          zoomLevel = "8.8";
        } else if (screenPixelRatio <= 4.9) {
          zoomLevel = "8.9";
        } else if (screenPixelRatio <= 5) {
          zoomLevel = "9";
        }else {
          zoomLevel = "unknown";
        }
    
        return zoomLevel;
    };
    

提交回复
热议问题