zoukankan      html  css  js  c++  java
  • JavaScript高级程序设计20.pdf

    用户代理检测

    为了不在全局作用域中添加多余的变量,我们使用模块增强模式来封装检测脚本

    以下是完整的用户代理字符串检测脚本,包括检测呈现引擎、平台、Window操作系统、移动设备和游戏系统

    var client=function(){

        //呈现引擎

        var engine={

          ie:0,

          gecko:0,

          webkit:0,

          khtml:0,

          opera:0,

          //完整的版本号

          ver:null

          };

        //浏览器

        var browser={

          //主要浏览器

          ie:0,

          firefox:0,

          safari:0,

          konq:0,

          opera:0,

          chrome:0,

          //具体的版本号

          ver:null

          };

        //平台、设备和操作系统

        var system={

          win:false,

          mac:false,

          xll:false,

          //移动设备

          iphone:false,

          ipod:false,

          ipad:false,

          ios:false,

          android:false,

          nokiaN:false,

          winMobile:false,

          //游戏系统

          wii:false,

          ps:false

          };

        //检测呈现引擎和浏览器

        var ua=navigator.userAgent;

        if(window.opera){

        engine.ver=browser.ver=window.opera.version();

        engine.opera=browser.opera=parseFloat(engine.ver);

        }else if(/AppleWebKit/(S+)/.test(ua)){

          engine.ver=RegExp["$1"];

          engine.webkit=parseFloat(engine.ver);

            //确定是Chrome还是Safari

            if(/Chrome/(S+)/.test(ua){

            browser.ver=RegExp["$1"];

            browser.chrome=parseFloat(browser.ver);

            }else if(/Version/(S+).test(ua)){

            browser.ver=RegExp["$1"];

            browser.safari=parseFloat(browser.ver);

            }else{

            //近似地确定版本号

            var safariVersion=1;

            if(engine.webkit<100){

              safariVersion=1;

              }else if(engine.webkit<312){

              safariVersion=1.2;

              }else if(engine.webkit<412){

              safariVersion=1.3;

              else{

              safariVersion=2;

              }

            browser.safari=browser.ver=safariVersion;

            }

          }else if(/KHTML/(S+)/.test(ua)||/Konqueror/([^;]+)/.test(ua)){

          engine.ver=browser.ver=RegExp["$1"];

          engine.khtml=browser.konq=parseFloat(engine.ver);

          }else if(/rv:([^)]+)) Gecko/d{8}/.test(ua)){

          engine.ver=RegExp["$1"];

          engine.gecko=parseFloat(engine.ver);

          //确定是不是Firefox

          if(/Firefox/(S+)/.test(ua)){

          browser.ver=RegExp["$1"];

          browser.firefox=parseFloat(browser.ver);

          }

          }else if(/MSIE([^;]+)/.test(ua)){

          engine.ver=browser.ver=RegExp["$1"];

          engine.ie=browser.ie=parseFloat(engine.ver);

          }

          //检测浏览器

          browser.ie=engine.ie;

          browser.opera=engine.opera;

          //检测平台

          var p=navigator.platform;

          system.win=p.indexOf("Win")==0;

          system.mac=p.indexOf("mac")==0;

          system.x11=(p=="x11")||(p.indexOf("Linux")==0);

          //检测Windows操作系统

          if(system.win){

            if(/Win(?:dows)?([^do]{2})s?(d+.d+)?/.test(ua)){

              if(RegExp["$1"]=="NT"){

              switch(RegExp["$2"]){

                case"5.0":

                  system.win="2000";

                  break;

                

                case"5.1":

                  system.win="xp";

                  break;

                

                case"6.0":

                  system.win="Vista";

                  break;

                

                case"6.1":

                  system.win="7";

                  break;

                

                default:

                  system.win="NT";

                  break;

                }

              }else if(RegExp["$1"]=="9x"){

                system.win="ME";

                }else{

                system.win=RegExp["$1"];

                }

              }

            }

          //移动设备

          system.iphone=ua.indexOf("iphone")>-1;

          system.ipod=ua.indexOf("ipod")>-1;

          system.ipad=ua.indexOf("ipad")>-1;

          system.nokiaN=ua.indexOf("nokiaN")>-1;

          //window mobile

          if(system.win=="CE"){

            system.winMobile=system.win;

          }else if(system.win=="Ph"){

            if(/Windows Phone OS (d+.d+)/.test(ua)){

              system.win="Phone";

              system.winMobile=parseFloat(RegExp["$1"]);

              }

            }

          //检测IOS版本

          if(system.mac&&ua.indexOf("Mobile")>-1){

            if(/CPU(?:iPhone)?OS(d+_d+)/.test(ua)){

              system.ios=parseFloat(RegExp.$1.replace("_","."));

              }else{

                system.ios=2;  //不能真正检测出来,所以只能猜测

                }

            }

          //检测Android版本

          if(/Android(d+.d+)/.test(ua)){

            system.android=parseFloat(RegExp.$1);

            }

          //游戏系统

          system.wii=ua.indexOf("Wii")>-1;

          system.ps=/playstation/i.test(ua);

          //返回这些对象

          return{

            engine:engine,

            browser:browser,

            system:system

          };

        }();

  • 相关阅读:
    https://rll.berkeley.edu/gps/
    论文阅读:Learning Manipulation Tasks from Vision-based Teleoperation
    Qt编写安防视频监控系统65-子模块9数据调试
    Qt编写安防视频监控系统64-子模块8飞行轨迹
    Qt编写可视化大屏电子看板系统22-平滑曲线图
    Qt编写安防视频监控系统63-子模块7悬浮地图
    OpenCV使用双边滤波以及锐化算子实现图片的美颜以及提升清晰度操作
    OpenCV实现均值滤波和高斯滤波
    OpenCV绘制线、圆、椭圆、矩形
    OpenCV利用像素点操作调整图像亮度
  • 原文地址:https://www.cnblogs.com/sdgjytu/p/3741137.html
Copyright © 2011-2022 走看看