国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

使用js檢測瀏覽器的實現代碼

2024-05-06 15:47:43
字體:
來源:轉載
供稿:網友
本篇文章是對使用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 = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
all[0]
);
return v > 4 ? v : undef
}());


被稱為史上最有創意的IE判斷。

注1:isIE = "/v" == "v" 方式IE9已經修復該bug,不能用此方式判斷IE瀏覽器了(2010-6-29用IE9 pre3測試的)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 安远县| 晋中市| 南陵县| 南平市| 揭西县| 东至县| 扶余县| 阳山县| 桦甸市| 新巴尔虎右旗| 江口县| 巫山县| 壤塘县| 兰州市| 伊宁县| 沾益县| 泗阳县| 怀仁县| 高台县| 宁南县| 平原县| 图片| 平顶山市| 盐城市| 巫山县| 达孜县| 清原| 都昌县| 凌云县| 华阴市| 九台市| 承德县| 搜索| 米易县| 潍坊市| 二连浩特市| 武冈市| 柏乡县| 泰顺县| 英德市| 衡阳市|