欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用js檢測(cè)瀏覽器的實(shí)現(xiàn)代碼

 更新時(shí)間:2013年05月14日 16:06:40   作者:  
本篇文章是對(duì)使用js檢測(cè)瀏覽器的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

在寫跨瀏覽器的js程序中,檢測(cè)瀏覽器是一個(gè)很重要的工作。我們不時(shí)要為不同的瀏覽器寫分支代碼。
如下是一種:

復(fù)制代碼 代碼如下:

//添加事件工具函數(shù)
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,第一種檢測(cè)瀏覽器方式稱為 user-agent 檢測(cè)方式。是最古老的,它檢測(cè)目標(biāo)瀏覽器的確切型號(hào),包括瀏覽器的名稱和版本。其實(shí)就是一個(gè)字符串,用navigator.userAgen或navigator.appName獲取。如下:
復(fù)制代碼 代碼如下:

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,第二種稱為 對(duì)象/特征 檢測(cè)方式,這是一種判斷瀏覽器能力的方式,也是目前流行的方式。即在使用一個(gè)對(duì)象之前檢測(cè)它是否存在。上面提到的addEvent方法中就使用了該方式。.addEventListener是w3c dom標(biāo)準(zhǔn)方式,而IE使用自己特有attachEvent。以下列舉幾個(gè):

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

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

c,window.external.AddFavorite用來(lái)在IE下添加到收藏夾。

d,window.sidebar.addPanel用來(lái)在FF下添加到收藏夾。


3,第三種很有趣,暫且稱為 瀏覽器缺陷或bug 方式,即某些表現(xiàn)不是瀏覽器廠商刻意實(shí)現(xiàn)的。如下:

復(fù)制代碼 代碼如下:

var isIE = !+"\v1";
var isIE = !-[1,];
var isIE = "\v"=="v";
isSafari=/a/.__proto__=='//';
isOpera=!!window.opera;

最經(jīng)典的莫過(guò)于 !-[1,] 的判斷方式,目前最少代碼判斷IE的方式,只需6個(gè)byte。這是個(gè)俄國(guó)人 發(fā)現(xiàn)的。利用了數(shù)組[1,]的length。還有來(lái)自英國(guó)的年輕 James Padolsey 利用IE條件注釋
復(fù)制代碼 代碼如下:

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
}());

被稱為史上最有創(chuàng)意的IE判斷。

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

相關(guān)文章

  • js中對(duì)象的聲明方式以及數(shù)組的一些用法示例

    js中對(duì)象的聲明方式以及數(shù)組的一些用法示例

    本文為大家介紹下js中的對(duì)象聲明方式以及數(shù)組的一些用法,下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下,希望對(duì)大家有所幫助
    2013-12-12
  • JavaScript基礎(chǔ)之變量

    JavaScript基礎(chǔ)之變量

    這篇文章主要介紹了如何理解JavaScript中的變量,幫助大家更好的學(xué)習(xí)JavaScript,感興趣的朋友可以了解下
    2021-11-11
  • Javascript學(xué)習(xí)筆記之 對(duì)象篇(三) : hasOwnProperty

    Javascript學(xué)習(xí)筆記之 對(duì)象篇(三) : hasOwnProperty

    判斷一個(gè)屬性是定義在對(duì)象本身而不是繼承自原型鏈,我們需要使用從 Object.prototype 繼承而來(lái)的 hasOwnProperty 方法。 hasOwnProperty 方法是 Javascript 中唯一一個(gè)處理對(duì)象屬性而不會(huì)往上遍歷原型鏈的。
    2014-06-06
  • JavaScript中的prototype.bind()方法介紹

    JavaScript中的prototype.bind()方法介紹

    在JavaScript中,我們經(jīng)常用到函數(shù)綁定,而當(dāng)你需要在另一個(gè)函數(shù)中保持this上下文時(shí),使用Function.prototype.bind()會(huì)很方便
    2014-04-04
  • jquery中prop()方法和attr()方法的區(qū)別淺析

    jquery中prop()方法和attr()方法的區(qū)別淺析

    官方例舉的例子感覺(jué)和attr()差不多,也不知道有什么區(qū)別,既然有了prop()這個(gè)新方法,不可能沒(méi)用吧,那什么時(shí)候該用attr(),什么時(shí)候該用prop()呢
    2013-09-09
  • JWT構(gòu)成及工作原理

    JWT構(gòu)成及工作原理

    這篇文章介紹了JWT構(gòu)成及工作原理,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • javascript中字符串的定義示例代碼

    javascript中字符串的定義示例代碼

    javascript中字符串如何定義,下面有個(gè)不錯(cuò)的示例,大家可以學(xué)習(xí)下
    2013-12-12
  • 關(guān)于JSON的定義以及如何使用

    關(guān)于JSON的定義以及如何使用

    這篇文章主要介紹了關(guān)于JSON的定義以及如何使用,JSON 的名稱中雖然帶有JavaScript,但這是指其語(yǔ)法規(guī)則是參考JavaScript對(duì)象的,而不是指只能用于JavaScript語(yǔ)言,需要的朋友可以參考下
    2023-07-07
  • 簡(jiǎn)介JavaScript中的setHours()方法的使用

    簡(jiǎn)介JavaScript中的setHours()方法的使用

    這篇文章主要介紹了簡(jiǎn)介JavaScript中的setHours()方法的使用,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-06-06
  • mailto的使用技巧分享

    mailto的使用技巧分享

    如何使用mailto?對(duì)于大多數(shù)人來(lái)說(shuō)并不是很陌生,但是實(shí)用上的細(xì)節(jié)部分你們有沒(méi)有注意到,接下來(lái)分享一下本人在使用過(guò)程中的經(jīng)驗(yàn),需要了解的朋友可以參考下
    2012-12-12

最新評(píng)論