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 相关文章推荐
jQuery的写法不同导致的兼容性问题的解决方法
Jul 29 Javascript
Android中资源文件(非代码部分)的使用概览
Dec 18 Javascript
js中onload与onunload的使用示例
Aug 25 Javascript
jQuery中contents()方法用法实例
Jan 08 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
Sep 21 Javascript
js原生Ajax的封装和原理详解
Mar 11 Javascript
分享一个精简的vue.js 图片lazyload插件实例
Mar 13 Javascript
jquery+php后台实现省市区联动功能示例
May 23 jQuery
webpack 最佳配置指北(推荐)
Jan 07 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
Jul 31 Javascript
vue中h5端打开app(判断是安卓还是苹果)
Feb 26 Vue.js
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
adodb与adodb_lite之比较
2006/12/31 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
alixixi runcode.asp的代码不错的应用
2007/08/08 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
JS OffsetParent属性深入解析
2014/01/13 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
用python写的一个wordpress的采集程序
2016/02/27 Python
对Python中的@classmethod用法详解
2018/04/21 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
python实现批量转换图片为黑白
2020/06/16 Python
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
求职信模版
2013/11/30 职场文书
校园广播稿500字
2014/02/04 职场文书
施工工地安全标语
2014/06/07 职场文书
学校火灾防控方案
2014/06/09 职场文书
文员求职信
2014/07/15 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python