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;
}();

用户代理检测是客户端检测的最后一个选择,优先使用能力检测和怪癖检测

时间: 2024-10-28 19:22:20

js客户端检测的相关文章

JS 客户端检测

能力检测 能力检测的目标不是识别特定的浏览器,而是识别浏览器的能力. 能力检测需要注意两点: 先检测达成目的的最常用的特性.因为先检测最常用的特性可以保证代码最优化,因为在多数情况下都可以避免测试多个条件 必须测试实际要用到的特性. 举例来说,检测某个属性是否存在并不能确定对象是否支持排序.看了下面的代码,得到的结论就是尽量使用typeof进行能力检测 function isSortable(object) { return !!object.sort;//这样做是不取的 这不是能力检测 只检测

JS学习9(客户端检测)

因为各个客户端能力的不同,要实现同一功能可能会需要不同的实现.这样就需要用到各种各样的客户端检测办法.值得一提的是,使用客户端检测是在万不得已的情况下才进行的,尽量使用通用的方法来实现想要的结果. 能力检测 能力检测的目标是识别浏览器的能力而不是识别特定的浏览器.只要确定当前浏览器有这个特性就可以执行相应的解决方案. 比如IE5之前没有document.getElementById(): function getElement(id){ if (document.getElementById){

从客户端检测到有潜在危险的Request.Form值

1.带有html标记内容提交(使用web编辑器): js: <script type="text/javascript"> //简单模式 var editor; KindEditor.ready(function (K) { editor = K.create('textarea[name="Content"]', { resizeType: 1, allowPreviewEmoticons: false, allowImageUpload: false

JavaScript学习--Item36 客户端检测技术

JavaScript 客户端检测 JavaScript 客户端检测是指通过javascript,判断客户端的环境,诸如使用的浏览器和操作系统.客户端检测是一种行之有效的开发策略.但不到万不得已,就不要使用客户端检测.先设计通用的方案,然后根据浏览器之间的差异和各自的怪癖quirky,再使用特定于浏览器的技术增强该方案. user-agent字符串检测法是最原始的浏览器检测方式,每个访问网站的程序都必须提供一个user-agent字符来向服务器确定他的身份.navigator对象包含一些浏览器信息

[OIDC in Action] 2. 基于OIDC(OpenID Connect)的SSO(纯JS客户端)

在上一篇基于OIDC的SSO的中涉及到了4个Web站点: oidc-server.dev:利用oidc实现的统一认证和授权中心,SSO站点. oidc-client-hybrid.dev:oidc的一个客户端,采用hybrid模式. oidc-client-implicit.dev:odic的另一个客户端,采用implicit模式. oidc-client-js.dev:oidc的又一个客户端,采用implicit模式,纯静态网站,只有js和html,无服务端代码. 其中hybrid和impli

javascript高级程序设计 第九章-- 客户端检测

javascript高级程序设计 第九章-- 客户端检测 客户端检测是javascript开发中最具争议的一个话题,由于浏览器间存在差别,通常需要根据不同浏览器的能力分别编写不同的代码.有下列常使用的客户端检测方法:能力检测:在编写代码之前先检测特定浏览器的能力.例如,脚本在调用某个函数之前,可能要先检测该函数是否存在.这种检测方法将开发人员从考虑具体的浏览器类型和版本中解放出来,让他们把注意力集中到相应的能力是否存在上.能力检测无法精确地检测特定的浏览器和版本.怪癖检测:怪癖实际上是浏览器中存

JavaScript高级程序设计学习笔记第九章--客户端检测

1.能力检测:能力检测的目标不是识别特定的浏览器,而是识别浏览器的能力.(我的理解就是识别浏览器能做什么不能做什么) 2.怪癖检测:目标是识别浏览器的特殊行为.但与能力检测确认浏览器支持什么能力不同,怪癖检测是想要知道浏览器存在什么缺陷(“怪癖”也就是 bug). 3.用户代理检测:争议最大的一种客户端检测技术.用户代理检测通过检测用户代理字符串来确定实际使用的浏览器.在每一次 HTTP 请求过程中,用户代理字符串是作为响应首部发送的,而且该字符串可以通过 JavaScript 的 naviga

javascript客户端检测技术

 1. Firefox    Gecko是firefox的呈现引擎.当初的Gecko是作为通用Mozilla浏览器一部分开发的,而第一个采用Gecko引擎的浏览器是Netscape6: 我们可以使用用户代理检测下:如下JS代码: var ua = navigator.userAgent; console.log(ua); 在windows下firefox下打印如下:    Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Fi

JavaScript学习笔记(十)---- 客户端检测和DOM

客户端检测: (一)能力检测 能力检测目的是识别浏览器的能力. 在编写代码之前先检测特定浏览器的能力.例如,脚本在调用某个函数之前,可能要先检测该函数是否存在. (二)怪癖检测 怪癖实际上是浏览器实现中存在的bug.怪癖检测通常涉及到运行一小段代码,然后确定浏览器是否存在某个怪癖. (三)用户代理检测 通过检测用户代理字符串来识别浏览器. DOM (一)节点层次 在HTML页面中,文档元素使用都是<html>元素.在XML中,没有预定义的元素,因此任何元素都可能成为文档元素. 每一段标记都可以