- 每個(gè)瀏覽器中的navigator對(duì)象也都有一套自己的屬性。下表列出了存在于所有瀏覽器中的屬性和方法友绝,以及支持它們的瀏覽器版本堤尾。
屬性或方法 | 說(shuō) 明 | IE | Firefox | Safari/Chrome | Opera |
---|---|---|---|---|---|
appCodeName | 瀏覽器的名稱。通常都是Mozilla迁客,即使在非Mozilla瀏覽器中也是如此 | 3.0+ | 1.0+ | 1.0+ | 7.0+ |
appMinorVersion | 次版本信息 | 4.0+ | - | - | 9.5+ |
appName | 完整的瀏覽器名稱 | 3.0+ | 1.0+ | 1.0+ | 7.0+ |
appVersion | 瀏覽器的版本郭宝。一般不與實(shí)際的瀏覽器版本對(duì)應(yīng) | 3.0+ | 1.0+ | 1.0+ | 7.0+ |
buildID | 瀏覽器編譯版本 | - | 2.0+ | - | - |
cookieEnabled | 表示cookie是否啟用 | 4.0+ | 1.0+ | 1.0+ | 7.0+ |
cpuClass | 客戶端計(jì)算機(jī)中使用的CPU類型(x86辞槐、68K、Alpha粘室、PPC或Other) | 4.0+ | - | - | - |
javaEnabled() | 表示當(dāng)前瀏覽器中是否啟用了Java | 4.0+ | 1.0+ | 1.0+ | 7.0+ |
language | 瀏覽器的主語(yǔ)言 | - | 1.0+ | 1.0+ | 7.0+ |
mimeTypes | 在瀏覽器中注冊(cè)的MIME類型數(shù)組 | 4.0+ | 1.0+ | 1.0+ | 7.0+ |
onLine | 表示瀏覽器是否連接到了因特網(wǎng) | 4.0+ | 1.0+ | - | 9.5+ |
oscpu | 客戶端計(jì)算機(jī)的操作系統(tǒng)或使用的CPU | - | 1.0+ | - | - |
platform | 瀏覽器所在的系統(tǒng)平臺(tái) | 4.0+ | 1.0+ | 1.0+ | 7.0+ |
plugins | 瀏覽器中安裝的插件信息的數(shù)組 | 4.0+ | 1.0+ | 1.0+ | 7.0+ |
preference() | 設(shè)置用戶的首選項(xiàng) | - | 1.5+ | - | - |
product | 產(chǎn)品名稱(如 Gecko) | - | 1.0+ | 1.0+ | - |
productSub | 關(guān)于產(chǎn)品的次要信息(如Gecko的版本) | - | 1.0+ | 1.0+ | - |
register-ContentHandler() | 針對(duì)特定的MIME類型將一個(gè)站點(diǎn)注冊(cè)為處理程序 | - | 2.0+ | - | - |
register-ProtocolHandler() | 針對(duì)特定的協(xié)議將一個(gè)站點(diǎn)注冊(cè)為處理程序 | - | 2.0 | - | - |
systemLanguage | 操作系統(tǒng)的語(yǔ)言 | 4.0+ | - | - | - |
userAgent | 瀏覽器的用戶代理字符串 | 3.0+ | 1.0+ | 1.0+ | 7.0+ |
userLanguage | 操作系統(tǒng)的默認(rèn)語(yǔ)言 | 4.0+ | - | - | 7.0+ |
userProfile | 借以訪問(wèn)用戶個(gè)人信息的對(duì)象 | 4.0+ | - | - | - |
vendor | 瀏覽器的品牌 | - | 1.0+ | 1.0+ | - |
vendorSub | 有關(guān)供應(yīng)商的次要信息 | - | 1.0+ | 1.0+ | - |
1榄檬、檢測(cè)插件
- 檢測(cè)瀏覽器中是否安裝了特定的插件。對(duì)于非IE瀏覽器衔统,可以使用plugins數(shù)組鹿榜,該數(shù)組中的每一項(xiàng)都包含下列屬性。
- name:插件的名字
- description:插件的描述缰冤。
- filename:插件的文件名犬缨。
- length:插件所處理的MIME 類型數(shù)量。
- 在檢測(cè)插件時(shí)棉浸,需要循環(huán)迭代每個(gè)插件并將插件的name與給定的名字進(jìn)行比較怀薛。
- hasPlugin()函數(shù)接受一個(gè)參數(shù):要檢測(cè)的插件名
/**檢測(cè)插件(在IE 中無(wú)效),在Firefox、Safari迷郑、Opera和Chrome中可以使用這種方法來(lái)檢測(cè)插件枝恋。**/
function hasPlugin(name){
name = name.toLowerCase();
for (var i=0; i < navigator.plugins.length; i++){
if (navigator. plugins [i].name.toLowerCase().indexOf(name) > -1){
return true;
}
}
return false;
}
//檢測(cè)Flash
alert(hasPlugin("Flash"));
//檢測(cè)QuickTime
alert(hasPlugin("QuickTime"));
- 在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í)符。
//檢測(cè)IE 中的插件
function hasIEPlugin(name){
try {
new ActiveXObject(name);
return true;
} catch (ex){
return false;
}
}
//檢測(cè)Flash
alert(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));
//檢測(cè)QuickTime
alert(hasIEPlugin("QuickTime.QuickTime"));
- 鑒于檢測(cè)這兩種插件的方法差別太大叹螟,因此典型的做法是針對(duì)每個(gè)插件分別創(chuàng)建檢測(cè)函數(shù)鹃骂,而不是使用前面介紹的通用檢測(cè)方法。
//檢測(cè)所有瀏覽器中的Flash
function hasFlash(){
var result = hasPlugin("Flash");
if (!result){
result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
}
return result;
}
//檢測(cè)所有瀏覽器中的QuickTime
function hasQuickTime(){
var result = hasPlugin("QuickTime");
if (!result){
result = hasIEPlugin("QuickTime.QuickTime");
}
return result;
}
//檢測(cè)Flash
alert(hasFlash());
//檢測(cè)QuickTime
alert(hasQuickTime());
2罢绽、注冊(cè)處理程序
Firefox/Chrome等瀏覽器為navigator對(duì)象新增了registerContentHandler()和registerProtocolHandler()方法畏线。這兩個(gè)方法可以讓一個(gè)站點(diǎn)指明它可以處理特定類型的信息。
registerContentHandler()方法接收三個(gè)參數(shù):要處理的MIME類型良价、可以處理該MIME類型的頁(yè)面的URL 以及應(yīng)用程序的名稱寝殴。
//將一個(gè)站點(diǎn)注冊(cè)為處理RSS 源的處理程序
navigator.registerContentHandler("application/rss+xml",
"http://www.somereader.com?feed=%s", "Some Reader");
/**第一個(gè)參數(shù)是RSS 源的MIME 類型。第二個(gè)參數(shù)是應(yīng)該接收RSS 源URL 的URL明垢,其中的%s 表示RSS 源URL蚣常,由瀏覽器自動(dòng)插入,當(dāng)下一次請(qǐng)求RSS源時(shí),瀏覽器就會(huì)打開指定的URL痊银,而相應(yīng)的Web 應(yīng)用程序?qū)⒁赃m當(dāng)方式來(lái)處理該請(qǐng)求**/
- registerProtocolHandler()方法史隆,它也接收三個(gè)參數(shù):要處理的協(xié)議(例如,mailto 或ftp)曼验、處理該協(xié)議的頁(yè)面的URL 和應(yīng)用程序的名稱泌射。
//將一個(gè)應(yīng)用程序注冊(cè)為默認(rèn)的郵件客戶端
navigator.registerProtocolHandler("mailto",
"http://www.somemailclient.com?cmd=%s", "Some Mail Client");
/**
注冊(cè)了一個(gè)mailto 協(xié)議的處理程序粘姜,該程序指向一個(gè)基于Web 的電子郵件客戶端。同樣熔酷,
第二個(gè)參數(shù)仍然是處理相應(yīng)請(qǐng)求的URL孤紧,而%s 則表示原始的請(qǐng)求。
**/