js——客户端检测

客户端检测

因为各个浏览器是不同的,面对不一致的问题,我们可以选择客户检测端的方法来解决这个问题。

1. 能力检测

目标不是识别特定的浏览器,而是识别浏览器的能力。先检测达成目的最常用的特性,保证代码优化。保证测试的实用性,一个特性存在,不意味着另一个特性也存在。

  • 更可靠的能力检测

    function isHostMethid(obj,pro)
          {
              var t=typeof(obj[pro]);
              alert(t);
              return t=='function'||  //t可能是一个函数
              (!!(t=='object'&&object[pro]))||    
              t=='unkmow';    //用typeof检测ActiveX对象
          }

2.怪癖检测

目标是识别浏览器的特殊行为,与能力检测不同,怪癖检测是为了检测浏览器存在实名缺陷。

//IE8及更早的版本存在的bug,如果某个示例属性与标记为[[DontEnum]]属性名相同,那么该实例属性不会出现在for-in循环中
var hasDontEnumQuirk=function(){
            var o={toString:function(){}};
            for(var prop in o){
                if(prop=='toString'){
                    return false;
                }
            }
            return true;
        }

3.用户代理检测

用户代理检测是通过检测用户代理字符串来确定实际使用的浏览器。

在服务器端,通过用户代理字符串来确定用户使用的浏览器是一种常用的方法,而在客户端,用户代理被当做一种万不得已才使用的方法,优先级在能力检测和怪癖检测之后
因为历史原因及现代浏览器中用户代理字符串的使用方式,通过用户代理字符串来检测特定的浏览器并不容易,因为浏览器提供商会试图通过在用户代理字符串添加一些欺骗性信息,欺骗网站相信自己是另一个浏览器。要根据不同呈现引擎,平台,操作系统,移动设备,浏览器等来做不同的检测。

用户代理检测适用于下列情形:

  • 不能直接准确的使用能力检测
  • 同一款浏览器在不同平台下具备不同能力
  • 为了跟踪分析等目的需要知道确切的浏览器

转载于:https://www.cnblogs.com/ellen-mylife/p/11376024.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值