1 能力检测
判断是否有某个属性或方法,例:在低版本中的opera浏览器中,window下有个opera属性

if (window.opera) {
alert("opera");
}

2 怪癖检测
通常是浏览器存在某种bug导致的,例:ie9-中如果对象有成员方法toString,则在在for-in中不会被遍历到
这种检测可能会因为bug在高版本中被修复而失效

var testObj = new Object();
testObj.toString = function() {
return "testObje";
};
for (var p in testObj) {
if (p == "toString") {
alert("这是非ie浏览器");
}
}

3 userAgent检测
这是最后使用的方法,通过navigator.userAgent可以检测出浏览器的大部分信息
但由于浏览器的userAgent也不是固定不变的,所以这个方法也不是最安全的
例:opera在16-版本前使用引擎为Presto,后面使用AppleWebKit

function TestNavigator() {
var ua = navigator.userAgent;
var engine = {
ie: false,
firefox: false,
safari: false,
chrome:false,
opera: false,
ver: ""
};
if (window.opera) {
engine.opera = true;
engine.ver = window.opera.version();
} else if (ua.indexOf("AppleWebKit") != -1) {
if (/OPR\/(\S+)/.test(ua)) {
engine.opera = true;
engine.ver = RegExp["$1"];
} else if(/Chrome\/(\S+)/.test(ua)) {
engine.chrome = true;
engine.ver = RegExp["$1"];
} else if (/Version\/(\S+)/.test(ua)) {
engine.safari = true;
engine.ver = RegExp["$1"];
}
} else if(/Firefox\/(\S+)/.test(ua)) {
engine.firefox = true;
engine.ver = RegExp["$1"];
} else if (/MSIE ([^;])/.test(ua)) {
engine.ie = true;
engine.ver = RegExp["$1"];
}
return engine;
}

4 使用browserdetect.js等js插件来判断,支持比较完善

js之客户端检测的更多相关文章

  1. JS之BOM、客户端检测和DOM

    这是第八章到第十二章的内容,粗略浏览过一遍. 一.BOM 浏览器对象模型.包括了window.location.navigator.screen和history对象. window:核心对象 1.JS ...

  2. H5案例分享:使用JS判断客户端、浏览器、操作系统类型

    使用JS判断客户端.浏览器.操作系统类型 一.JS判断客户端类型 JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Androi ...

  3. JS判断客户端、浏览器、操作系统

    一.JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Android客户端. 方法一: var u = navigator.us ...

  4. Javascript高级编程学习笔记(34)—— 客户端检测(3)用户代理检测

    用户代理检测 前面的文章介绍的是如何检测浏览器对某一功能的支持情况 但是在实践中我们有些时候免不了需要知道用户到底是用的什么浏览器对我们的站点进行访问 这也是统计用户行为的一部分 用户代理检测这种方式 ...

  5. 使用JS判断客户端、浏览器、操作系统类型

    一.JS判断客户端类型 JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Android客户端. 核心代码如下: 方法一: &l ...

  6. JS判断访问设备(userAgent)加载不同页面 JS判断客户端操作系统类型(platform)

    //平台.设备和操作系统 var system ={ win : false, mac : false, xll : false }; //检测平台 var p = navigator.platfor ...

  7. JS判断客户端是否是iOS或者Android或者ipad(三)

     *  * @function: 判断浏览器类型是否是Safari.Firefox.ie.chrome浏览器  * @return: true或false  *  */ function isSafa ...

  8. JS判断客户端是否是iOS或者Android或者ipad(二)

    js判断客户端是IPAD和iphone 多了就不说了,直接上代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22     funct ...

  9. [Javascript]客户端检测

    客户端检测是一种行之有效的开发策略.但不到万不得已,就不要使用客户端检测.先设计通用的方案,然后根据浏览器之间的差异和各自的怪癖quirky,再使用特定于浏览器的技术增强该方案. 能力检测 Featu ...

随机推荐

  1. JS控制图片拖动 放大 缩小 旋转 支持滚轮放大缩小 IE有效

    <html> <head>     <title>图片拖动,放大,缩小,转向</title> <script type="text/ja ...

  2. POJ 2080

    import java.util.*; public class Main { public static void main(String args[]){ Scanner cin=new Scan ...

  3. Android 内存剖析 – 发现潜在问题

    简介 移动平台上的开发和内存管理紧密相关.尽管随着科技的进步,现今移动设备上的内存大小已经达到了低端桌面设备的水平,但是现今开发的应用程序对内存的需求也在同步增长.主要问题出在设备的屏幕尺寸上-分辨率 ...

  4. Win 7英文系统显示中文乱码的解决(转)

    Win 7英文系统显示中文乱码的解决http://www.enet.com.cn/article/2011/0811/A20110811896633.shtml 请点击Startmenu并点击Cont ...

  5. 【uva1502/hdu4117-GRE Words】DP+线段树优化+AC自动机

    这题我的代码在hdu上AC,在uva上WA. 题意:按顺序输入n个串以及它的权值di,要求在其中选取一些串,前一个必须是后一个的子串.问d值的和最大是多少. (1≤n≤2×10^4 ,串的总长度< ...

  6. cocos2d游戏界面卡住声音正常播放的问题分析

    cocos2d游戏界面卡住声音正常播放的问题分析 从目前已知的情况看,出现这种情况只可能是设备的内存不够导致的. 从代码上来说内存不够时会调用AppController的“- (void)applic ...

  7. React的CSS

    1.代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="U ...

  8. Android ListView无法触发ItemClick事件

    Android ListView无法触发ItemClick事件 开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承Base ...

  9. Hadoop完全分布式集群配置

    1.前话 寒假实在太闲了,所以闲着无聊地去了解"大数据"这个新概念,这几年到处都在说什么大数据时代的,不能不让我感到好奇啊. 大数据有啥用?随便谷歌百度一大堆我也不多说了. 我自己 ...

  10. maven tomcat 插件实现热部署

    tomcat 的maven插件有助于提高开发效率,原因是: --可以直接把项目发布到远程的服务器上. --能够实现项目的热部署,在开发过程中修改了Java类,不需要重启tomcat 首先配置一个tom ...