客户端检测
程序员文章站
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);
在决定使用哪种客户端检测方法时,一般应优先考虑使用能力检测。怪癖检测是确定应该如何处理代码的第二选择。而用户代理检测则是客户端检测的最后一种方案,因为这种方法对用户代理字符串具有很强的依赖性。
上一篇: thinkphp 模版解析问题