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(代码片段