码迷,mamicode.com
首页 > 其他好文 > 详细

浏览器检测

时间:2017-08-17 14:22:32      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:支持   rip   tor   object   ref   case   linux   产生   cas   

由于每个浏览器都有自己独特的扩展,所以在开发阶段来判断浏览器是一个非常重要的步骤。虽然浏览器开发商在公共接
口方面投入了很多精力,努力的去支持最常用的公共功能;但在现实中,浏览器之间的差异,以及不同浏览器的“怪癖”
却是非常多的,因此客户端检测除了是一种补救措施,更是一种行之有效的开发策略。

一.navigator对象

appName: 完整的浏览器名称

navigator对象是window对象下的
alert(window.navigator); //[object Navigator]

alert(navigator.appName); //这个属性不能精确的取到浏览器名称

alert(navigator.userAgent); //浏览器用户代理字符串,表示浏览器信息的东西

alert(navigator.platform); //浏览器所在的系统

 

浏览器嗅探器:
是一段程序,有了它,浏览器检测就变得简单了。我们这里提供了一个browserdetect.js文件,用于判断浏览器的名称、
版本号及操作系统。
调用方式 说明
BrowserDetect.browser 浏览器的名称,例如Firefox,IE
BrowserDetect.version 浏览器的版本,比如7、11
BrowserDetect.OS 浏览器所宿主的操作系统,比如Windows、Linux

//给IE7以下的浏览器做特殊处理
if(BrowserDetect.browser==‘Internet Explorer‘ && BrowserDetect.version<7){
alert("需要做IE低版本的兼容!");
}


-------------------------------------
//插件检测

alert(navigator.plugins.length); //IE不支持

for(var i=0;i<navigator.plugins.length;i++){
document.write(‘插件名:‘+navigator.plugins[i].name+‘<br/>‘);
document.write(‘文件名:‘+navigator.plugins[i].filename+‘<br/>‘);
document.write(‘描 述:‘+navigator.plugins[i].description+‘<br/>‘);
document.write(‘<br/>‘);
}


//检测非IE浏览器插件是否存在

function hasPlugin(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;
}
alert(hasPlugin(‘Flash‘));

 

//检测IE浏览器的控件
function hasIEPlugin(name) {
try{ //这里叫做尝试着去执行一段代码,如果有误,就去执行catch
new ActiveXObject(name); //这里的name必须是控件的唯一标识符ID
return true; //如果new成功了,没有产生错误,那么就不去执行catch
}catch(e){
return false; //如果new失败了,就执行catch里面的语句
}
}

alert(hasIEPlugin(‘ShockwaveFlash.ShockwaveFlash‘)); //传IE的唯一标识符

-----------------------------------------------------------------
//跨浏览器检测Flash是否存在

function hasPlugin(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 hasIEPlugin(name) {
try{
new ActiveXObject(name);
return true;
}catch(e){
return false;
}
}

function hasFlash(){
//首先,先去检测非IE的浏览器
var result=hasPlugin(‘Flash‘); //如果返回true,说明检测到了,并且不是IE浏览器
if(!result) { //如果没有检测到,说明这个浏览器没有flash插件或者它可能是IE浏览器
result=hasIEPlugin(‘ShockwaveFlash.ShockwaveFlash‘);
}
}

alert(hasFlash());


-----------------------------------------------------------------
//mime类型 IE浏览器不支持


-----------------------------------------------------------------------------------------------------------
-----------------------
二. 客户端检测:分为:能力检测、怪癖检测和用户代理检测

能力检测:
var width=window.innerWidth;
if(typeof width!=‘number‘){
width=document.documentElement.clientWidth;
}
alert(width);
另外一种写法是检查是不是标准模式

怪癖检测:bug(缺陷)
var box={
toString:function(){}, //IE的小BUG toString和原型重名了,就不打印了
toString2:function(){}
};
for(var o in box){
alert(o);
}

//用户代理字符串
document.write(navigation.userAgent);

浏览器检测

标签:支持   rip   tor   object   ref   case   linux   产生   cas   

原文地址:http://www.cnblogs.com/gengxinnihaoma/p/7380783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!