首頁 >web前端 >js教程 >使用js檢測瀏覽器的實作程式碼_基礎知識

使用js檢測瀏覽器的實作程式碼_基礎知識

WBOY
WBOY原創
2016-05-16 17:33:48961瀏覽

在寫跨瀏覽器的js程式中,偵測瀏覽器是一個很重要的工作。我們不時要為不同的瀏覽器寫分支程式碼。
如下是一種:

複製程式碼 代碼如下:

代碼如下:

//新增事件工具函數
function addEvent(el,type,handle){
    if(el.addEventListener){//for standard browses
  
    }else if(el.attachEvent){//for IE
        el.attachEvent("on" event,handle); =handle;
    }

}


1,第一種偵測瀏覽器方式稱為 user-agent 偵測方式。是最古老的,它會偵測目標瀏覽器的確切型號,包括瀏覽器的名稱和版本。其實就是一個字串,用navigator.userAgen或navigator.appName取得。如下:
複製程式碼 程式碼如下:
function isIE()pator

function isIE()pator}
function isIE6() {
    return navigator.userAgent.split(";")[1]. toLowerCase().indexOf("msie 6.0")=="-1"?false:true;
}
function isIE7(){
    return navigator.userAgent.split(";")[11 ].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.Agent.indexOf(Fongent.indexOf(1C 🎜>}


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,
       TagName('i');

    while (
        div.innerHTML = '',
',
all[0]
    );     return v > 4 ? v : undef}());
史上最も創造的な IE 判決として知られています。

注 1: isIE = "v" == "v" メソッド IE9 ではバグが修正されており、このメソッドを使用して IE ブラウザを判断することはできません (2010-6 に IE9 pre3 でテスト済み) -29)

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn