手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >使用js检测浏览器的实现代码
使用js检测浏览器的实现代码
摘要:在写跨浏览器的js程序中,检测浏览器是一个很重要的工作。我们不时要为不同的浏览器写分支代码。如下是一种:复制代码代码如下://添加事件工具函...

在写跨浏览器的js程序中,检测浏览器是一个很重要的工作。我们不时要为不同的浏览器写分支代码。

如下是一种:

复制代码 代码如下:

//添加事件工具函数

function addEvent(el,type,handle){

if(el.addEventListener){//for standard browses

el.addEventListener(type,handle,false);

}else if(el.attachEvent){//for IE

el.attachEvent("on"+event,handle);

}else{//other

el["on"+type]=handle;

}

}

1,第一种检测浏览器方式称为 user-agent 检测方式。是最古老的,它检测目标浏览器的确切型号,包括浏览器的名称和版本。其实就是一个字符串,用navigator.userAgen或navigator.appName获取。如下:

复制代码 代码如下:

function isIE(){

return navigator.appName.indexOf("Microsoft Internet Explorer")!=-1 && document.all;

}

function isIE6() {

return navigator.userAgent.split(";")[1].toLowerCase().indexOf("msie 6.0")=="-1"?false:true;

}

function isIE7(){

return navigator.userAgent.split(";")[1].toLowerCase().indexOf("msie 7.0")=="-1"?false:true;

}

function isIE8(){

return navigator.userAgent.split(";")[1].toLowerCase().indexOf("msie 8.0")=="-1"?false:true;

}

function isNN(){

return navigator.userAgent.indexOf("Netscape")!=-1;

}

function isOpera(){

return navigator.appName.indexOf("Opera")!=-1;

}

function isFF(){

return navigator.userAgent.indexOf("Firefox")!=-1;

}

function isChrome(){

return navigator.userAgent.indexOf("Chrome") > -1;

}

2,第二种称为 对象/特征 检测方式,这是一种判断浏览器能力的方式,也是目前流行的方式。即在使用一个对象之前检测它是否存在。上面提到的addEvent方法中就使用了该方式。.addEventListener是w3c dom标准方式,而IE使用自己特有attachEvent。以下列举几个:

a,talbe.cells只有IE/Opera支持。

b,innerText/insertAdjacentHTML除Firefox外,IE6/7/8/Safari/Chrome/Opera都支持。

c,window.external.AddFavorite用来在IE下添加到收藏夹。

d,window.sidebar.addPanel用来在FF下添加到收藏夹。

3,第三种很有趣,暂且称为 浏览器缺陷或bug 方式,即某些表现不是浏览器厂商刻意实现的。如下:

复制代码 代码如下:

var isIE = !+"v1";

var isIE = !-[1,];

var isIE = "v"=="v";

isSafari=/a/.__proto__=='//';

isOpera=!!window.opera;

最经典的莫过于 !-[1,] 的判断方式,目前最少代码判断IE的方式,只需6个byte。这是个俄国人 发现的。利用了数组[1,]的length。还有来自英国的年轻 James Padolsey 利用IE条件注释

复制代码 代码如下:

var ie = (function(){

var undef,

v = 3,

div = document.createElement('div'),

all = div.getElementsByTagName('i');

while (

div.innerHTML = '<>',

all[0]

);

return v > 4 ? v : undef

}());

被称为史上最有创意的IE判断。

注1:isIE = "v" == "v" 方式IE9已经修复该bug,不能用此方式判断IE浏览器了(2010-6-29用IE9 pre3测试的)

【使用js检测浏览器的实现代码】相关文章:

如何实现浏览器上的右键菜单

微信内置浏览器私有接口WeixinJSBridge介绍

js实现异步循环实现代码

使用node+vue.js实现SPA应用

浏览器检测JS代码(兼容目前各大主流浏览器)

js去除浏览器默认底图的方法

一个很简单的办法实现TD的加亮效果.

些很实用且必用的小脚本代码

必须点击广告才能进入的代码

JQuery中层次选择器用法实例详解

精品推荐
分类导航