JavaScript ------ 获取浏览器缩放比例,若不是100% ,给出提示

摘要:
ua=navigator.userAgent.toLowerCase();}elseif(~ua.indexOf('sie')){if(screen.deviceXDPI&screen.logicalXDPI){ratio=screen.deviceXDPI/screen.localXDPI;==未定义&

原由:弹窗问题,不再当前页面内展示的数据,弹窗弹不出来,而且只要前面的弹出来,后面的也可弹出来了

多方测试以为与浏览器的滚动条有关

最后,偶然发现和浏览器的缩放有关系,当浏览器缩放比例为100%  的时候,未在当前页面展示的数据,可以弹出,而不在此范围的不行

而通过js 又禁止不了浏览器缩放,故通过js 进行设置,如果浏览器缩放比例不是 100% 给出提示。

   <script src="https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>

   <script type="text/javascript">
   // 判断pc浏览器是否缩放,若返回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;
   };
   //window.onresize 事件可用于检测页面是否触发了放大或缩小。
   $(function(){
     //alert(detectZoom())
   })
   $(window).on('resize',function(){
         isScale();
   });
   //判断PC端浏览器缩放比例不是100%时的情况
   function isScale(){
     var rate = detectZoom();
     if(rate != 100){
       //如何让页面的缩放比例自动为100,'transform':'scale(1,1)'没有用,又无法自动条用键盘事件,目前只能提示让用户如果想使用100%的比例手动去触发按ctrl+0
       console.log(1)
      alert('当前页面不是100%显示,请按键盘ctrl+0恢复100%显示标准,以防页面显示错乱!')
       //var t = window.devicePixelRatio   // 获取下载的缩放 125% -> 1.25    150% -> 1.5
     
     }
   }
    
   //阻止pc端浏览器缩放js代码
   //由于浏览器菜单栏属于系统软件权限,没发控制,我们着手解决ctrl/cammond + +/- 或 Windows下ctrl + 滚轮 缩放页面的情况,只能通过js来控制了
    // jqeury version
   $(document).ready(function () {
     // chrome 浏览器直接加上下面这个样式就行了,但是ff不识别
     $('body').css('zoom', 'reset');
     $(document).keydown(function (event) {
       //event.metaKey mac的command键
       if ((event.ctrlKey === true || event.metaKey === true)&& (event.which === 61 || event.which === 107 || event.which === 173 || event.which === 109 || event.which === 187  || event.which === 189)){
         event.preventDefault();
       }
     });
     $(window).bind('mousewheel DOMMouseScroll', function (event) {
       if (event.ctrlKey === true || event.metaKey) {
          event.preventDefault();
       }
     });
   
   });
   </script>

 防止页面body 内容受到浏览器缩放影响,js  的 zoom 属性

 <script>
     window.onload = function() {
        document.body.style.zoom = "normal"; //避免zoom尺寸叠加
        let scale = document.body.clientWidth / 1904;
        document.body.style.zoom = scale;
      };
      //防抖,避免resize占用过多资源
      (function() {
        var throttle = function(type, name, obj) {
          obj = obj || window;
          var running = false;
          var func = function() {
            if (running) {
              return;
            }
            running = true;
            requestAnimationFrame(function() {
              obj.dispatchEvent(new CustomEvent(name));
              running = false;
            });
          };
          obj.addEventListener(type, func);
        };

        throttle("resize", "optimizedResize");
      })();

      window.addEventListener("optimizedResize", function() {
        document.body.style.zoom = "normal";
        let scale = document.body.clientWidth / 1904;
        document.body.style.zoom = scale;
  });
    </script>

免责声明:文章转载自《JavaScript ------ 获取浏览器缩放比例,若不是100% ,给出提示》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Docker云端部署篇最新Cocoapods 安装及使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Attributes学习笔记20091116:页面按钮的二次确认之JS实现

今天在网上看到一篇文章,是关于按钮的二次确认,建立页面参照着做了下,有以下心得: 1、取指定页面,发生点击操作的对象的ID属性:         var btnId=event.srcElement.getAttribute('ID'); 2、获得指定Id的控件的Text值,这里的控件指的是服务器端控件         var btnText=doc...

vue:axios拦截器

拦截器分两类:请求拦截器和响应拦截器 一、请求拦截器 在请求发出之前设置一些信息。比如说设置请求头, 在use方法参数即第一个函数的形参中通过config来做信息的配置,配置完之后,必须把config返回,这样才能完成拦截器的功能。第二个函数用于处理错误的信息。 用拦截器的方式配置请求头会更加灵活。拦截器中可以通过config获取更多的信息,比如url地...

selenium实现淘宝的商品爬取

一、问题 本次利用selenium自动化测试,完成对淘宝的爬取,这样可以避免一些反爬的措施,也是一种爬虫常用的手段。本次实战的难点: 1.如何利用selenium绕过淘宝的登录界面 2.获取淘宝的页面内容实现翻页,并判断是否翻页成功。 3.获取每一页的信息,实现数据的抓取工作。  4.环境python3.6,对应的Chrome的webdriver驱动网址:...

R中的高效批量处理函数(lapply sapply apply tapply mapply)(转)

转自:http://blog.csdn.net/wa2003/article/details/45887055 R语言提供了批量处理函数,可以循环遍历某个集合内的所有或部分元素,以简化操作。 这些函数底层是通过C来实现的,所以效率也比手工遍历来的高效。批量处理函数有很重要的apply族函数:lapply sapply apply tapply mapply...

Python 操作 MySQL 的5种方式

不管你是做数据分析,还是网络爬虫,Web 开发、亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Python 操作 MySQL 的5种方式,你可以在实际开发过程中根据实际情况合理选择。 1、MySQLdb MySQLdb又叫MySQL-python ,是 Python 连接 MySQL 最流行的一个驱动,很...

远程调试工具weinre使用教程

一:前言 我们都知道,chrome的开发者工具(f12)是一个方便我们调试PC页面的工具。但是现在我们的开发离不开移动端,那如果我们需要对手机页面进行调试,那该怎么办了? 当然,chrome的开发者工具还是强大的,我们可以再开发者工具中开启device mode来模拟手机调试。具体步骤为: 1. 点击这个图标就可以进入device模式了。   2...