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


Posted in Javascript onSeptember 28, 2014

这里所说的缩放不是指浏览器大小的缩放,而是指浏览器网页内容的百分比缩放(按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;
};

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

Javascript 相关文章推荐
各浏览器中querySelector和querySelectorAll的实现差异分析
May 23 Javascript
Jquery动态改变图片IMG的src地址示例
Jun 25 Javascript
JavaScript各类型的关系图解
Oct 16 Javascript
javascript每日必学之继承
Feb 23 Javascript
Vue.js 和 MVVM 的注意事项
Nov 07 Javascript
原生js编写焦点图效果
Dec 08 Javascript
JS实现仿百度文库评分功能
Jan 12 Javascript
JS实现的点击表头排序功能示例
Mar 27 Javascript
angularjs 获取默认选中的单选按钮的value方法
Feb 28 Javascript
JS实现的DOM插入节点操作示例
Apr 04 Javascript
JavaScript门道之标准库
May 26 Javascript
Angular项目如何升级至Angular6步骤全纪录
Sep 03 Javascript
Node.js中使用mongoskin操作mongoDB实例
Sep 28 #Javascript
js使用for循环与innerHTML获取选中tr下td值
Sep 26 #Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
Sep 26 #Javascript
简单方法判断JavaScript对象为null或者属性为空
Sep 26 #Javascript
jquery uploadify 在FF下无效的解决办法
Sep 26 #Javascript
jQuery判断当前点击的是第几个li的代码
Sep 26 #Javascript
javascript 自定义回调函数示例代码
Sep 26 #Javascript
You might like
php的header和asp中的redirect比较
2006/10/09 PHP
php生成文件
2007/01/15 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
Yii2实现自定义独立验证器的方法
2017/05/05 PHP
网上抓的一个特效
2007/05/11 Javascript
用javascript实现的激活输入框后隐藏初始内容
2007/06/29 Javascript
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
jquery 得到当前页面高度和宽度的两个函数
2010/02/21 Javascript
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
2013/02/26 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
2016/03/17 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
基于python绘制科赫雪花
2018/06/22 Python
pandas 选择某几列的方法
2018/07/03 Python
在python中修改.properties文件的操作
2020/04/08 Python
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
介绍一下Python下range()函数的用法
2013/11/07 面试题
小学岗位竞聘方案
2014/01/22 职场文书
运动会广播稿200字
2014/10/18 职场文书
先进教师事迹材料
2014/12/16 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
无罪辩护词范文
2015/05/21 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python