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 相关文章推荐
解决 firefox 不支持 document.all的方法
Mar 12 Javascript
利用js跨页面保存变量做菜单的方法
Jan 17 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
Dec 11 Javascript
两种常用的javascript数组去重方法思路及代码
Mar 26 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
May 07 Javascript
用C/C++来实现 Node.js 的模块(二)
Sep 24 Javascript
非常实用的js验证框架实现源码 附原理方法
Jun 08 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
Dec 04 Javascript
vue cli4下环境变量和模式示例详解
Apr 09 Javascript
javascript实现贪吃蛇小练习
Jul 05 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
Aug 04 Javascript
JavaScript 实现页面滚动动画
Apr 24 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安全配置
2006/10/09 PHP
解析CI的AJAX分页 另类实现方法
2013/06/27 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
vuex实现简易计数器
2016/10/27 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
python 测试实现方法
2008/12/24 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
2014年开学第一课活动方案
2014/03/06 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
精彩的广告词
2014/03/19 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
街道党风廉政建设调研报告
2015/01/01 职场文书
委托书的样本
2015/01/28 职场文书
企业法律事务工作总结
2015/08/11 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang