navigator對象
識別客戶端瀏覽器的事實標準,是所有支持JavaScript的瀏覽器所共有的。
屬性或方法 | 說明 |
---|---|
appCodeName | 瀏覽器名稱。通常是Mozilla |
appName | 完整的瀏覽器名稱 |
appMinorVersion | 次版本信息 |
appVersion | 瀏覽器的版本。一般不與實際的瀏覽器版本對應 |
buildID | 瀏覽器編譯版本 |
cookieEnabled | 表示cookie是否啓用 |
cpuClass | 客戶端計算機中使用的CPU類型(x86,68K,Alpha,PPC或Other) |
javaEnabled() | 表示當前瀏覽器中是否啓用Java |
language | 瀏覽器的住語言 |
mimeTypes | 在瀏覽器中註冊的MIME類型數組 |
onLine | 表示瀏覽器是否連接到了因特網 |
Platform | 瀏覽器所在的系統平臺 |
plugins | 瀏覽器中安裝的插件信息的數組 |
userAgent | 瀏覽器的用戶代理字符串 |
檢測插件
檢測瀏覽器中是否安裝了特定的插件。
方法:plugins[i];
每個數組中的包含的屬性
鍵名 | 鍵值 |
---|---|
name: | 插件的名字 |
description: | 插件的描述 |
filename: | 插件的文件名 |
length: | 插件所處理的MIME類型數量 |
Firefox ,Safari,Opera和Chrome使用:
function hasPlugin(name){
//轉換爲小寫
name = name.toLowerCase();
for(var i = 0; i<navigator.plugins.length; i++){
// 迭代plugins數組,通過indexof()檢測每個name屬性
if(navigator.plugins[i].name.toLowerCase().indexOf(name)>-1){
return true;
}
}
return false;
}
//檢測Flash
alert(hasPlugin("Flash"));// true
//檢測QuickTime
alert(hasPlugin("QuickTime"));//false
IE中使用:
function hasIEPlugin(name){
// 在try-catch中實例化,因創建未知COM對象會拋出錯誤。
try{
new ActiveXObject(name);
return true;
} catch (ex){
return false;
}
}
//檢測Flash
alert(hasPlugin("ShockwaveFlash.ShockwaveFlash"));// true
//檢測QuickTime
alert(hasPlugin("QuickTime.QuickTime"));//false
在IE中檢測插件的唯一方式就是使用專有的ActiveXObject類型,並創建特定插件的實例。以COM對象的方式實現插件,而COM對象使用唯一標識符來標識。因此要檢查特定的插件,就必須知道其COM標識符。Flash的標識符是ShockwaveFlash.ShockwaveFlash。
兩種方法合併使用,使用判斷所有類型的瀏覽器是否安裝了特定插件:
// 檢測所有瀏覽器中的Flash
function hasFlash()
var result = hasPlugin("Flash");
//先判斷在非IE瀏覽器,返回false的話再使用IE插件檢測方法,若繼續返回false,則不存在。
if(!result){
result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
}
return result;
}
// 檢測所有瀏覽器中的QuickTime
function hasQuickTime(){
var result = hasPlugin("QuickTime");
if(!result){
result = hasIEPlugin("QuickTime.QuickTime");
}
return result;
}
//檢測Flash
alert(hasFlash);// true
//檢測QuickTime
alert(hasQuickTime);//false
註冊處理程序
註冊處理程序就爲像使用桌面應用程序一樣默認使用這些在線應用程序提供了一種方式。
指明一個站點可以處理特定類型的信息:
registerContentHandler()方法:接受3個參數:要處理的MIME類型,可以處理該MIME類型的頁面的URL以及應用程序的名稱。
講一個站點註冊爲處理RSS(簡單信息聚合,個人認爲是根據個人要求定製的信息整合推送服務)源的處理程序:
navigator.registerContentHandler(
//RSS源的MIME類型
"application/rss+xml",
//接收RSS源URL的URL。%s表示RSS源URL,下一次請求RSS源時,瀏覽器就會打開指定的URL而相應的Web應用程序將以適當方式來處理該請求。
"http://www.somereader.com?feed=%s",
//應用程序的名稱。
"Some Reader");
registerProtocolHandler()方法:接受3個參數:要處理的協議,處理該協議的頁面的URL以及應用程序的名稱。
navigator.registerProtocolHandler(
"mailto",
"http://www.somemailclient.com?cmd=%s",
"Some Mail Client"
);
註冊了一個mailto協議的處理程序,改程序指向一個基於Web的電子郵件客戶端。第二個參數仍然是處理相應請求的URL,而%s則表示原始的請求。