客户端检测

本文探讨了三种浏览器检测方法:能力检测、怪癖检测和用户代理检测。能力检测关注浏览器功能,如DOM1级支持;怪癖检测识别特殊行为,如枚举问题;用户代理检测则依赖于UA字符串。
一 、能力检测

能力检测的目标不是识别特定的浏览器,而是识别浏览器的能力。

if (object.propertyInQuestion){ 
 	//使用 object.propertyInQuestion 
}

1.检测某个属性是否存在并不能确定对象是否支持排序。更好的方式是检测 sort 是不是一个函数。

function isSortable(object) {
    return typeof object.sort == "function";
}

2.确定浏览器是否支持 Netscape 风格的插件

var hasNSPlugins = !!(navigator.plugins && navigator.plugins.length);

3.确定浏览器是否具有 DOM1 级规定的能力

var hasDOM1 = !!(document.getElementById && document.createElement && 
 document.getElementsByTagName);
二、怪癖检测

与能力检测类似,怪癖检测(quirks detection)的目标是识别浏览器的特殊行为。

var hasDontEnumQuirk = function () {
    var o = {
        toString: function () {}
    };
    for (var prop in o) {
        if (prop == "toString") {
            return false;
        }
    }
    return true;
}();

以上代码通过一个匿名函数来测试该“怪癖”,函数中创建了一个带有 toString()方法的对象。在正确的 ECMAScript 实现中,toString 应该在 for-in 循环中作为属性返回。

三、用户代理检测

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

document.write("浏览器名称: "+navigator.appName);
document.write("浏览器版本号: "+navigator.appVersion);
document.write("浏览器用户代理: "+navigator.userAgent);
document.write("运行平台: "+navigator.platform);
document.write("是否支持cookie: "+navigator.cookieEnabled);
document.write("系统语言(IE): "+navigator.systemLanguage);
document.write("用户语言(IE): "+navigator.userLanguage);

在决定使用哪种客户端检测方法时,一般应优先考虑使用能力检测。怪癖检测是确定应该如何处理代码的第二选择。而用户代理检测则是客户端检测的最后一种方案,因为这种方法对用户代理字符串具有很强的依赖性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值