1.能力检测的基本模式如下:
//能力检测的基本模式if (object.propertyInQuestion) {// 使用object.propertyInQuestion}throw new Error("No way to retrieve element")// 如检查sort是不是函数(存在)fucntion isSortable(object) {return typeof object.sort == "function";}
在可能情况下,尽量使用typeof 进行能力检测
// 检测所有浏览器的Flashfunction hasFlash() {var result = hasPlugin(‘Flash‘);if (!result) {result = hasIEPlugin(‘ShockwaveFlash.ShockwaveFlash‘);}return result;}// 检测Flash// alert(hasFlash());
对于方法检测
// 如检查sort是不是函数(存在)function isSortable(object) {return typeof object.sort == "function";}// 在浏览器环境下测试任何对象的某个特性是否存在/*** author:Peter Michaux*/function isHostMethod(object, property) {var t = typeof object[property];return t == "function" || (!!(t == ‘object‘ && object[property])) || t == "unknown";} //确定浏览器是否支持Netscape风格的插件var hasNSplugins = !!(navigator.plugins && navigator.plugins.length);// 确定浏览器是否具有DOM1级规定的能力var hasDOM1 = !!(document.getElementById && document.createElement && docuemnt.getElementByTagName);// 怪癖检测var hasDontEnumQuick = function() {var o = { toString: function() {} };for (var prop in o) {if (prop == "toString") {return false;}}return true;}();
用户代理检测是客户端检测的最后一个选择,优先使用能力检测和怪癖检测
js客户端检测
原文地址:http://www.cnblogs.com/sundjly/p/7899037.html