干熟妇在线视频午夜剧场一级A级|99成人香视频日本两性激情视频|久久 午夜福利无码精品人妻一区|热久久超碰精品精品少妇一区二区|五月天综合在线国产一区免费视频|亚洲成人中心热re久久99|亚洲国产怡红院丁香五月综合h|玖玖九久久久午夜射精视频

十二年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開(kāi)發(fā)_APP開(kāi)發(fā),低調(diào)、敢創(chuàng)新、有情懷!
南昌百恒網(wǎng)絡(luò)微信公眾號(hào) 掃一掃關(guān)注
小程序
tel-icon全國(guó)服務(wù)熱線:400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
掃一掃打開(kāi)百恒網(wǎng)絡(luò)微信小程序

百恒網(wǎng)絡(luò)

南昌百恒網(wǎng)絡(luò)

檢測(cè)插件Plugins數(shù)組的使用方法及ActiveXObject類型的應(yīng)用

百恒網(wǎng)絡(luò) 2013-06-03 5371

在使用JS時(shí),我們?yōu)榱吮WC瀏覽器的兼容及通用性,我們需要對(duì)瀏覽器是否支持相應(yīng)插件進(jìn)行檢測(cè),接下來(lái)由南昌網(wǎng)站設(shè)計(jì)公司技術(shù)人員向大家介紹瀏覽器插件檢測(cè)方法及注意事項(xiàng).

檢測(cè)瀏覽器中是否安裝了特定的插件是一種最常見(jiàn)的檢測(cè)例程。對(duì)于非IE瀏覽器,可以使用plugins數(shù)組來(lái)達(dá)到這個(gè)目的。該數(shù)組中的每一項(xiàng)都包含下列屬性:

□name:插件的名字;

□description:插件的描述;

□filename:插件的文件名;

□length:插件所處理的MIME類型數(shù)量。

一般來(lái)說(shuō),name屬性中會(huì)包含檢測(cè)插件必需的所有信息,但有時(shí)候也不完全如此。在檢測(cè)插件時(shí),需要像下面這樣循環(huán)迭代每個(gè)插件并將插件的name與給定的名字進(jìn)行比較:

//檢測(cè)插件(在IE中無(wú)效)

function hasPlugin( name){

name=name.toLowerCase();

for (var i=0; i if (navigator. plugins[i].name. toLowerCase().indexOf (name)>-1)(

return true;

}

}

return false;

}

//檢測(cè)Flash

alert (hasPlugin("Flash"));

//檢測(cè) QuickTime

alert (hasPlugin("QuickTime"));

//檢測(cè)Java

alert (hasPlugin( "Java"));

這個(gè)hasPlugin()函數(shù)接受一個(gè)參數(shù):要檢測(cè)的插件名。第一步是將傳人的名稱轉(zhuǎn)換為小寫(xiě)形式,以便于比較。然后,迭代plugins數(shù)組,通過(guò)indexOf()檢測(cè)每個(gè)name屬性,以確定傳人的名稱是否出現(xiàn)在字符串的某個(gè)地方。比較的字符串都使用小寫(xiě)形式可以避免因大小寫(xiě)不一致導(dǎo)致的錯(cuò)誤。而傳人的參數(shù)應(yīng)該盡可能具體,以避免混淆。應(yīng)該說(shuō),像Flash和QuickTime這樣的字符串就比較具體了,不容易導(dǎo)致混淆。在Firefox、Safari、Opera和Chrome中可以使用這種方法來(lái)檢測(cè)插件。

檢測(cè)IE中的插件比較麻煩,因?yàn)镮E不支持Netscape式的插件。在IE中檢測(cè)插件的唯一方式就是使用專有的ActiveXObject類型,并嘗試創(chuàng)建一個(gè)特定插件的實(shí)例。IE是以COM對(duì)象的方式實(shí)現(xiàn)插件的,而COM對(duì)象使用唯一標(biāo)識(shí)符來(lái)標(biāo)識(shí)。因此,要想檢查特定的插件,就必須知道其COM標(biāo)識(shí)符。例如,F(xiàn)lash的標(biāo)識(shí)符是ShockwaveFlash.ShockwaveFlash。知道唯一標(biāo)識(shí)符之后,就可以編寫(xiě)類似下面的函數(shù)來(lái)檢測(cè)IE中是否安裝相應(yīng)插件了:

//檢測(cè)IE中的插件

function hasIEPlugin (name){

try{

new ActiveXObj ect (name);

return true;

} catch(ex){

return false;

}

}

//檢測(cè)Flash

alert (hasIEPlugin("ShockwaveFlash. ShockwaveFlash"))

//檢測(cè) QuickTime

alert( hasIEPlugin("QuickTime. QuickTime“));

在這個(gè)例子中,函數(shù)hasIEPlugin()只接收一個(gè)COM標(biāo)識(shí)符作為參數(shù)。在函數(shù)內(nèi)部,首先會(huì)嘗試創(chuàng)建一個(gè)COM對(duì)象的實(shí)例。之所以要在try-catch語(yǔ)句中進(jìn)行實(shí)例化,南昌網(wǎng)絡(luò)公司技術(shù)員提示大家是因?yàn)閯?chuàng)建未知COM對(duì)象會(huì)導(dǎo)致拋出錯(cuò)誤。這樣,如果實(shí)例化成功,則函數(shù)返回true;否則,如果拋出了錯(cuò)誤,則執(zhí)行catch塊,結(jié)果就會(huì)返回false。例子最后檢測(cè)IE中是否安裝了Flash和QuickTime插件。

鑒于檢測(cè)這兩種插件的方法差別太大,因此典型的做法是針對(duì)每個(gè)插件分別創(chuàng)建檢測(cè)函數(shù),而不是使用前面介紹的通用檢測(cè)方法。來(lái)看下面的例子:

//檢測(cè)所有瀏覽器中的Flash

function hasFlash()(

var result=hasPlugin("Flash");

if(!result){

result=hasIEPlugin("ShockwaveFlash. ShockwaveFlash");

}

return result;

}

//檢測(cè)所有瀏覽器中的QuickTime

f unc tion hasQuickTime(){

var result=hasPlugin("QuickTime");

if(!result){

result=hasIEPlugin("QuickTime. QuickTime");

}

return result;

}

//檢測(cè)Flash

alert(hasFlash());

//檢測(cè) QuickTime

alert (hasQuickTime());

上面代碼中定義了兩個(gè)函數(shù):hasFlash()和hasQuickTime()。每個(gè)函數(shù)都是先嘗試使用不針對(duì)IE的插件檢測(cè)方法。如果返回了false(在IE中會(huì)這樣),那么再使用針對(duì)IE的插件檢測(cè)方法。如 果IE的插件檢測(cè)方法再返回false,則整個(gè)方法也將返回false。只要任何一次檢測(cè)返回true,整個(gè)方法都會(huì)返回true。

plugins集合有一個(gè)名叫refresh()的方法,用于刷新plugins以反映最新安裝的插件。這個(gè)方法接收一個(gè)參數(shù):表示是否應(yīng)該重新加載頁(yè)面的一個(gè)布爾值。如果將這個(gè)值設(shè)置為true,則會(huì)重新加載包含插件的所有頁(yè)面;否則,只更新plugins集合,不重新加載頁(yè)面。

本文僅限內(nèi)部技術(shù)人員學(xué)習(xí)交流,不得作于其他商業(yè)用途.文章出自:南昌網(wǎng)站建設(shè)公司-百恒網(wǎng)絡(luò) http://www.myforexfactory.net 如轉(zhuǎn)載請(qǐng)注明出處!

400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
掃一掃打開(kāi)百恒網(wǎng)絡(luò)小程序

歡迎您的光顧,我們將竭誠(chéng)為您服務(wù)×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務(wù) 售后服務(wù)
 
售后服務(wù) 售后服務(wù)
 
備案專線 備案專線
 
×