javascript检测网页缩放演示代码

简介: javascript检测网页缩放演示代码

一、为什么会提示浏览器显示比例不正常?

在网上冲浪,有时在打某个网站时,会提示你的浏览器显示比例不是100%,建议你将浏览器显示比例恢复为100%,以便获得最佳显示效果。

二、检测网页缩放比例的方法

那么这些网站是如何检测你的浏览器显示比例的呢?

(一)window.devicePixelRatio

一般可以使用window.devicePixelRatio来检测。 window.devicePixelRatio当前显示设备的物理像素分辨率与 CSS 像素分辨率的比率,当其值为1时缩放率就是100%,如果其值小于1表示当前网页缩小显示了,如果其值天大于1表示当前网页放大显示了。所以利用该属性可以用于检测网页是否被缩放了。

(二)window.outerWidth/window.innerWidth

如果当前使用的浏览器不支持window.devicePixelRatio,那么我们可以使用window.outerWidth/window.innerWidth来测算,其中:window.outerWidth的值为浏览器窗口的外部宽度,包括所有界面元素(如工具栏/滚动条),而window.innerWidth的值为窗口内容区域的宽度,包括垂直滚动条(如果呈现的话)。

(三)screen.deviceXDPI/screen.logicalXDPI

对于IE浏览器来说,还可以使用screen.deviceXDPI/screen.logicalXDPI来测算。其中screen.deviceXDPI代表显示屏幕的每英寸实际水平点数,screen.logicalXDPI代表显示屏幕每英寸水平常规点数。

综上,我们可以编写一个函数来返回当前网页显示比例:

//功  能:取当前网页显示比例
//返回值:当前网页显示比例,若未能获取有关数据,将返回0
//更  新:20230914创建
function getScrRatio()
{
    //(window.devicePixelRatio:当前显示设备的物理像素分辨率与 CSS 像素分辨率的比率
    if(window.devicePixelRatio !== undefined)
    {
        return window.devicePixelRatio;    
    }

    //window.outerWidth:浏览器窗口的外部宽度,包括所有界面元素(如工具栏/滚动条)
    //window.innerWidth:窗口内容区域的宽度,包括垂直滚动条(如果呈现的话)
    if(window.outerWidth !== undefined && window.innerWidth !== undefined)
    {
        return window.outerWidth/window.innerWidth;
    }

    if(~navigator.userAgent.toLowerCase().indexOf('msie'))
    {
        //(IE提供)screen.deviceXDPI:显示屏幕的每英寸实际水平点数
        //(IE提供)screen.logicalXDPI:显示屏幕每英寸水平常规点数
        if(screen.deviceXDPI && screen.logicalXDPI)
        {
            return screen.deviceXDPI/screen.logicalXDPI;        
        }
    }

    return 0;
} //getScrRatio()

三、演示代码

我们在网页上放“显示数据”和“停止显示”两个按钮。其中“停止显示”按钮初始为禁用状态。

当我们点击“显示数据”按钮,就定时采集和显示window.devicePixelRatio、window.outerWidth、window.innerWidth、screen.deviceXDPI/screen.logicalXDPI的值,并将“停止显示”按钮改为可用状态。

当我们点击“停止显示”按钮,就停止更新数据,并将“停止显示”按钮恢复为禁用状态。

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="PurpleEndurer">
  <meta name="Keywords" content="屏幕缩放比">
  <meta name="Description" content="屏幕缩放">
  <title>屏幕缩放比</title>
 </head>
 <body>
 <button onclick="showDataTiming()">显示数据</button>  <button id="btnStopShow" onclick="stopShow()">停止显示</button>
 <p>
    浏览器类型:
<script>
    document.write(navigator.userAgent);
</script>
 </p>

 <p>
    devicePixelRatio:<span id="spanDevPR"></span>
 </p>
 <p>
    window.outerWidth:<span id="spanWinOW"></span>  
    window.innerWidth:<span id="spanWinIW"></span>
 </p>
 <p>
     window.screen.deviceXDPI:<span id="spanDevXDPI"></span>  
    window.screen.logicalXDPI:<span id="spanlogXDPI"></span>
 </p>
 <p>
    屏幕缩放比:<span id="spanScrRadio"></span>
 <p>
<script type="text/javascript">
var btnStopShow = document.getElementById("btnStopShow");
btnStopShow.disabled=true;
var spanDevPR = document.getElementById("spanDevPR");
var spanWinOW = document.getElementById("spanWinOW");
var spanWinIW = document.getElementById("spanWinIW");
var spanDevXDPI = document.getElementById("spanDevXDPI");
var spanlogXDPI = document.getElementById("spanlogXDPI");
var spanScrRadio =  document.getElementById("spanScrRadio");
var t = 0;//定时器

//功  能:取当前网页显示比例
//返回值:当前网页显示比例,若未能获取有关数据,将返回0
//更  新:20230914创建
function getScrRatio()
{
    //(window.devicePixelRatio:当前显示设备的物理像素分辨率与 CSS 像素分辨率的比率
    if(window.devicePixelRatio !== undefined)
    {
        return window.devicePixelRatio;    
    }

    //window.outerWidth:浏览器窗口的外部宽度,包括所有界面元素(如工具栏/滚动条)
    //window.innerWidth:窗口内容区域的宽度,包括垂直滚动条(如果呈现的话)
    if(window.outerWidth !== undefined && window.innerWidth !== undefined)
    {
        return window.outerWidth/window.innerWidth;
    }

    if(~navigator.userAgent.toLowerCase().indexOf('msie'))
    {
        //(IE提供)screen.deviceXDPI:显示屏幕的每英寸实际水平点数
        //(IE提供)screen.logicalXDPI:显示屏幕每英寸水平常规点数
        if(screen.deviceXDPI && screen.logicalXDPI)
        {
            return screen.deviceXDPI/screen.logicalXDPI;        
        }
    }

    return 0;
} //getScrRatio()


function showData()
{
    if(undefined != window.devicePixelRatio)
    {
        spanDevPR.innerText = window.devicePixelRatio;    
    }


    if (undefined != window.outerWidth)
    {
        spanWinOW.innerText = window.outerWidth;
    }

    if (undefined != window.innerWidth)
    {
        spanWinIW.innerText = window.innerWidth;
    }

    if (undefined != screen.deviceXDPI)
    {
        spanDevXDPI.innerText = screen.deviceXDPI;
    }

    if (undefined != screen.logicalXDPI)
    {
        spanlogXDPI.innerText = screen.logicalXDPI;
    }

     var scrRatio = getScrRatio();
    if (scrRatio)
    {
        spanScrRadio.innerText = Math.round(scrRatio*100); 
    }
}//showData()


function showDataTiming()
{
    t = self.setInterval("showData()",500);
    btnStopShow.disabled = false;
}//showDataTiming()


function stopShow()
{
    t = window.clearInterval(t);
    btnStopShow.disabled = true;
}//stopShow()

</script>

</body>
</html>

四、代码运行效果

image.png image.png

image.png

相关文章
|
11天前
|
存储 JavaScript 对象存储
js检测数据类型有那些方法
js检测数据类型有那些方法
128 59
|
5天前
|
JavaScript 前端开发 Python
用python执行js代码:PyExecJS库
文章讲述了如何使用PyExecJS库在Python环境中执行JavaScript代码,并提供了安装指南和示例代码。
31 1
用python执行js代码:PyExecJS库
|
3天前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
4天前
|
存储 JavaScript 前端开发
webSocket+Node+Js实现在线聊天(包含所有代码)
文章介绍了如何使用WebSocket、Node.js和JavaScript实现在线聊天功能,包括完整的前端和后端代码示例。
27 0
|
3天前
|
存储 JSON JavaScript
JavaScript帮我编写快递自动分拣的代码,区分省份市区县城乡镇
JavaScript帮我编写快递自动分拣的代码,区分省份市区县城乡镇在JavaScript中编写一个用于快递自动分拣的代码,区分省份、市区、县、城乡镇,通常意味着你需要一个数据结构来存储这些地理区域的信息,并编写逻辑来根据快递地址中的信息将其分配到正确的分类中。 这里,我将提供一个简化的示例,说明如何使用JavaScript对象和函数来实现这一功能。请注意,这个示例是高度简化的,并且假设你已经有了某种方式(如正则表达式或API调用)来从快递地址中提取省份、市区、县等信息。 ----------------------------------- ©著作权归作者所有:来自51CTO博客作者goS
|
4天前
|
JavaScript 前端开发 Python
python执行js代码
本文档详细介绍如何安装Node.js环境及PyExecJS库,并提供示例代码展示其功能。首先,通过指定链接安装Node.js,安装完毕后可在命令行中输入`node --version`来验证安装是否成功。接着,使用`pip install PyExecJS`安装PyExecJS库,该库允许Python程序执行JavaScript代码。文档还提供了多个示例代码,展示了如何在Python环境中执行和编译JavaScript代码,并可以选择特定的JavaScript运行时环境,如Node.js或JScript。最后,通过具体案例展示了PyExecJS的功能与使用方法。
13 3
用CSS+JavaScript打造网页中的选项卡
用CSS+JavaScript打造网页中的选项卡
|
12天前
|
JavaScript
网站内容禁止复制的js代码
网站内容禁止复制的js代码
|
18天前
|
缓存 JavaScript 前端开发
js和html代码一定要分离吗
JavaScript(JS)和HTML代码的分离虽非绝对必要,但通常被推荐
|
1天前
|
C++ Windows
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
HTML+JavaScript构建C++类代码一键转换MASM32代码平台