欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

客户端检测

程序员文章站 2022-06-06 09:21:32
...

一 、能力检测

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

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);

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

相关标签: 客户端检测