js客户端检测

Posted sundjly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js客户端检测相关的知识,希望对你有一定的参考价值。

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客户端检测的主要内容,如果未能解决你的问题,请参考以下文章

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

Android:使用Tab检测单个片段viewpager

十条实用的jQuery代码片段

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

VSCode自定义代码片段——JS中的面向对象编程