caoporm97国产在线视频|欧美性XXXXX精品|一本一道久久a久久精品综合开|精品久久久久久久久久久AⅤ|

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

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

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

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

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

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

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

□name:插件的名字;

□description:插件的描述;

□filename:插件的文件名;

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

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

//檢測插件(在IE中無效)

function hasPlugin( name){

name=name.toLowerCase();

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

return true;

}

}

return false;

}

//檢測Flash

alert (hasPlugin("Flash"));

//檢測 QuickTime

alert (hasPlugin("QuickTime"));

//檢測Java

alert (hasPlugin( "Java"));

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

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

//檢測IE中的插件

function hasIEPlugin (name){

try{

new ActiveXObj ect (name);

return true;

} catch(ex){

return false;

}

}

//檢測Flash

alert (hasIEPlugin("ShockwaveFlash. ShockwaveFlash"))

//檢測 QuickTime

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

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

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

//檢測所有瀏覽器中的Flash

function hasFlash()(

var result=hasPlugin("Flash");

if(!result){

result=hasIEPlugin("ShockwaveFlash. ShockwaveFlash");

}

return result;

}

//檢測所有瀏覽器中的QuickTime

f unc tion hasQuickTime(){

var result=hasPlugin("QuickTime");

if(!result){

result=hasIEPlugin("QuickTime. QuickTime");

}

return result;

}

//檢測Flash

alert(hasFlash());

//檢測 QuickTime

alert (hasQuickTime());

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

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

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

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

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

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