浏览器检测
2016-03-17 19:55
387 查看
关于navigator
navigator对象是window对象下的,使用navigator对象的一些属性可以获得浏览器的一些信息,常用的属性如下:
alert(navigator.appName); //可以获得浏览器的名称,但是此属性不能的浏览器的名称
alert(navigator.userAgent); // 可以获得浏览器的用户代理,表示浏览器信息的东西
alert(navigator.platform); //可以获得浏览器所在的系统
插件检测
检测非IE浏览器插件是否存在
检测IE浏览器的控件
跨浏览器检测Flash插件是否存在
获取各种浏览器引擎,浏览器名称,浏览器版本以及系统 的信息(代码可能有误)
navigator对象是window对象下的,使用navigator对象的一些属性可以获得浏览器的一些信息,常用的属性如下:
alert(navigator.appName); //可以获得浏览器的名称,但是此属性不能的浏览器的名称
alert(navigator.userAgent); // 可以获得浏览器的用户代理,表示浏览器信息的东西
alert(navigator.platform); //可以获得浏览器所在的系统
插件检测
//插件检测 for(var i = 0;i<navigator.plugins.length;i++){ document.write('插件名:'+navigator.plugins[i].name+'</br>'); //plugins[]是一个plugin对象的数组,里面的元素代表浏览器已安装的插件 document.write('文件名:'+navigator.plugins[i].filename+'</br>'); document.write('</br>'); }
检测非IE浏览器插件是否存在
//其实就是检测插件里面有没有Flash这个字符串 funcation hasPlugins(name){ var name = name.toLowerCase(); //将插件名的字符串转换成小写 for(var i=0;i<navigator.plugins.length;i++){ if(navigator.plugins[i].name.toLowerCase.indexOf(name)>-1){ return true; //indexOf()返回的是某个指定字符串值在字符串中首次出现的位置,如果要检索的字符串值没有出现,则该方法返回 -1,且区分大小写 } } return false; } alert(hasPlugins('Flash'));
检测IE浏览器的控件
function hasIEPlugins(name){ try{ //尝试着执行一段代码,如果,就去执行catch new ActiveXObject(name); //这里的name必须控件的标识符ID return true; }catch(e){ return false; } } alert(hasIEPlugins('ShockwaveFlash.ShockwaveFlash'));
跨浏览器检测Flash插件是否存在
function hasPlugins (name) { var name =name.toLowerCase(); //转化成小写 for (var i = 0; i < navigator.plugins.length; i++) { if (navigator.plugins[i].name.toLowerCase().indexOf(name)>-1) { return true; } } return false; } function hasIEPlugins(name){ try{ new ActiveXObject(name) return true; }catch(e){ return false; } } function hasFlash () { //先去检测非IE的浏览器 var result = hasPlugins('Flash'); //如果返回true ,说明检测到了,并且不是IE浏览器 if(!result){ //如果没有检测到,说明这个浏览器没有Flash插件,或者它是IE浏览器 result=hasIEPlugins('ShockwaveFlash.ShockwaveFlash'); } return result; } alert(hasFlash());
获取各种浏览器引擎,浏览器名称,浏览器版本以及系统 的信息(代码可能有误)
var client = function (){ //创建一个对象 //引擎 var engine={ ie:false, gecko:false, webkit:false, khtml:false, opera:false, //引擎的版本 ver:0 }; //浏览器 var browser={ ie:false, firefox:false, chrome:false, safari:false, opera:false, //浏览器的版本号 ver:0, // 浏览器的通用名称 name:'' }; //系统 var system={ win:false, mac:false, x11:false, //系统名称 sysname:'' }; //核心检测程序 var ua = navigator.userAgent; var p = navigator.platform; if(p.indexOf('Win')==0){ system.win = true; system.sysname='Windows'; }else if(p.indexOf('Mac')==0){ system.mac = true; system.sysname = 'Macintosh'; }else if(p=='X11'|| p.indexOf('Linux')==0){ system.x11 = true; system.sysname = 'Linux'; } if(window.opera){ engine.opera = browser.opera = true; //表示确定opera引擎 engine.ver = browser.ver = window.opera.version(); browser.name = 'Opera'; }else if (/AppleWebKit\/(\S+))/.test(ua)) { engine.webkit = true; //表示确定webkit引擎 AppleWebkit\/(\S+) engine.ver = RegExp['$1']; if(/ Chrome\/(\S+)/.test(ua)){ browser.chrome = true; browser.ver = RegExp['$1']; browser.name = 'Chrome'; }else{ browser.safari = true; if(/Version\/(\S+)/test(ua)){ browser.ver = RegExp['$1']; } browser.name = 'Safari'; } }else if(/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)){ engine.gecko = true; //表示确定gecko引擎 engine.ver = RegExp['$1']; if(/Firefox\/(\S+)/test(ua)){ browser.firefox = true; browser.ver = RegExp['$1']; browser.name = 'Firefox'; } }else if(/Trident\/([^;])/.test(ua){ engine.ie = browser.ie = true; engine.ver = browser.ver = RegExp['$1']; browser.name = 'Internet Explorer'; } return{ engine:engine , //前面一个engine是属性,后一个engine是对象 browser:browser, system:system } }(); //自我执行 alert(client.system.sysname+'|' +client.browser.name + client.browser.ver);
相关文章推荐
- visual studio code基础
- Spring JdbcTemplate实现数据库操作
- 认识Elasticsearch
- ODI 系列学习--整体架构概念
- Atitit.复合文档的格式 标准化格式
- Atitit.复合文档的格式 标准化格式
- 用消息机制解耦Activity跳转
- 华为:十六进制转换成十进制
- Spring的LocalSessionFactoryBean类
- c++中的前向声明
- Linux笔记(56)——获取操作系统基本信息
- Java生成多个随机长度字符串并用Collections排序
- 面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?请根据自己的理解简明扼要的回答。
- 复利计算的实验总结跟感悟
- 这些情况下onReume不应该是你的选择
- 蓝桥杯 历届试题 逆波兰表达式
- atitit.userService 用户系统设计 v4 q316 .doc
- 对PIC(position independent code)的探究
- Timer
- python基础(二)