1. 程式人生 > >js客戶端檢測

js客戶端檢測

length property object mnt 檢查 method .get fun num

1.能力檢測的基本模式如下:

//能力檢測的基本模式
if (object.propertyInQuestion) {
// 使用object.propertyInQuestion
}

throw new Error("No way to retrieve element")

// 如檢查sort是不是函數(存在)
fucntion isSortable(object) {
return typeof object.sort == "function";
}

在可能情況下,盡量使用typeof 進行能力檢測

// 檢測所有瀏覽器的Flash
function 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客戶端檢測