javascript检测浏览器的缩放状态实现代码

 更新时间:2014年09月28日 11:57:49   作者:前端开发  
这篇文章主要介绍了javascript检测浏览器的缩放状态实现代码,需要的朋友可以参考下

这里所说的缩放不是指浏览器大小的缩放,而是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放)。
检测这种缩放有很种方法,QQ空间都通过flash来检测浏览器是否处于缩放。这里提供javascript的方法来检测浏览器的缩放。
对于 IE6,就直接无视了,因为 IE6 只能对文本进行缩放。
先来说说浏览器提供的标准检测接口,window.devicePixelRatio 是设备上物理像素和设备独立像素的比例,该属性就可以用于检测网页是否被缩放了。在普通的 PC 浏览器上,在默认无缩放的情况下其默认值是 1。目前Firefox、chrome等都得到了很好的支持。
好吧,接下来该说说 IE 的处理方法了。IE 提供了 window.screen.deviceXDPI 和 window.screen.logicalXDPI 两个属性,deviceXDPI 就是对应的设备上的物理像素,而 logicalXDPI 就是对应了设备独立像素的比例。估计标准的检测接口也只是基于 IE 这种方法的一种改进。这两个属性在 windows XP+ 以上的系统上的默认值都是 96,因为系统默认的就是 96dpi 。
对于以上两种都不支持的浏览器,还可以利用window.outerWidth 和 window.innerWidth 这两个属性。outerWidth 返回的是窗口元素的外部实际宽度,innerWidth 返回的是窗口元素的内部实际宽度,这两个宽度都包含了滚动条在内的宽度。
有了这些属性基本就可以搞定 PC 浏览器上常见的浏览器了。实现代码如下:

detectZoom 函数的返回值如果是 100 就是默认缩放级别,大于 100 则是放大了,小于 100 则是缩小了。

function detectZoom (){ 
  var ratio = 0,
    screen = window.screen,
    ua = navigator.userAgent.toLowerCase();

   if (window.devicePixelRatio !== undefined) {
      ratio = window.devicePixelRatio;
  }
  else if (~ua.indexOf('msie')) {  
    if (screen.deviceXDPI && screen.logicalXDPI) {
      ratio = screen.deviceXDPI / screen.logicalXDPI;
    }
  }
  else if (window.outerWidth !== undefined && window.innerWidth !== undefined) {
    ratio = window.outerWidth / window.innerWidth;
  }
  
   if (ratio){
    ratio = Math.round(ratio * 100);
  }
  
   return ratio;
};

原创文章,转载请注明: 转载自前端开发

相关文章

  • JS+CSS实现简易实用的滑动门菜单效果

    JS+CSS实现简易实用的滑动门菜单效果

    这篇文章主要介绍了JS+CSS实现简易实用的滑动门菜单效果,涉及JavaScript鼠标事件及页面元素遍历的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • 服务端预渲染之Nuxt(使用篇)

    服务端预渲染之Nuxt(使用篇)

    这篇文章主要介绍了服务端预渲染之Nuxt(使用篇),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 详解JavaScript中精度失准问题及解决方法

    详解JavaScript中精度失准问题及解决方法

    这篇文章主要介绍了JavaScript中精度失准问题及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • javascript实现延时显示提示框特效代码

    javascript实现延时显示提示框特效代码

    本文给大家分享的是javascript通过setTimeout实现延时显示提示框的特效代码,效果非常棒,这里推荐给大家
    2016-04-04
  • ECharts事件处理与旭日图实现

    ECharts事件处理与旭日图实现

    这篇文章介绍了ECharts事件处理与实现旭日图的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 如何通俗的解释TypeScript 泛型

    如何通俗的解释TypeScript 泛型

    这篇文章主要介绍了TypeScript 泛型,对泛型感兴趣的同学,可以参考下
    2021-05-05
  • alixixi runcode.asp的代码不错的应用

    alixixi runcode.asp的代码不错的应用

    alixixi runcode.asp的代码不错的应用...
    2007-08-08
  • 利用JavaScript构建树形图的方法详解

    利用JavaScript构建树形图的方法详解

    ​树形图可视化广泛用于分层数据分析。如果你没有经验还想创建一个,那将会有些复杂。下面是一个详细教程,教你如何使用JavaScript创建交互式树形图
    2022-06-06
  • JS实现的雪花飘落特效示例

    JS实现的雪花飘落特效示例

    这篇文章主要介绍了JS实现的雪花飘落特效,结合实例形式详细分析了JavaScript结合时间函数动态操作页面元素的相关实现技巧,需要的朋友可以参考下
    2019-12-12
  • 原生JavaScript实现网页版计算器

    原生JavaScript实现网页版计算器

    这篇文章主要为大家详细介绍了原生JavaScript实现网页版计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11

最新评论