1. 程式人生 > >navigator物件及其應用

navigator物件及其應用

1.navigator物件的屬性:
navigator.appCodeName // 瀏覽器名稱 大多都是Mozilla
navigator.appName // 完整的瀏覽器名稱
navigator.appVersion // 瀏覽器版本,一般不與實際的瀏覽器版本對應
navigator.cookieEnabled // 表示cookie是否啟用
navigator.cpuClass // 客戶端計算機使用的CPU型別
navigator.javaEnabled() // 表示當前瀏覽器中是否啟用了java
navigator.language // 瀏覽器的主語言
navigator.systemLanguage // 作業系統的語言
navigator.userLanguage // 作業系統的預設語言
navigator.mimeTypes // 在瀏覽器中註冊的MIME型別的陣列
navigator.onLine // 瀏覽器是否連結到了因特網
navigator.platform // 瀏覽器所在的系統平臺
navigator.plugins // 瀏覽器中安裝的外掛資訊的陣列
navigator.product // 產品名稱(如Gecko)
navigator.productSub // 關於產品的次要資訊(如Gecko的版本)
navigator.vendor // 瀏覽器的品牌
navigator.vendorSub // 有關供應商的次要資訊
navigator.registerProtocolHandler() // 針對特定的協議,將一個站點註冊為處理程式
navigator.userAgent // 瀏覽器的使用者代理字串
// 上述屬性通常用於檢測顯示網頁的瀏覽器型別
2.應用
2.1.在非IE瀏覽器下檢測外掛(利用navigator.plugins陣列進行檢測)
navigator.plugins陣列有如下屬性:
這裡寫圖片描述


name:外掛名稱 description:外掛的描述 filename:外掛的檔名 length:外掛所處理的MIME型別數量
一般來說,用name進行檢測外掛

// 不支援IE
function hasPlugin(name) {
    name = name.toLowerCase();
    var pluginsArray = navigator.plugins;
    for (var i = 0, pluginLength = pluginsArray.length; i < pluginLength; i++) {
        if (pluginsArray[i].name.toLowerCase().indexOf(name) > -1
) { return true; } } return false; } hasPlugin("Flash");

2.2.在IE下檢測外掛:
檢測IE中的外掛比較麻煩,因為IE不支援Natscape式的外掛。在IE中檢測外掛的唯一方式就是使用專有的ActiveXObject型別,並嘗試建立一個特定外掛的例項。IES是以COM物件的方式實現外掛的,而COM物件使用唯一識別符號來標識。因此,要想檢查特定的外掛,就必須知道其COM識別符號。例如,Flash的識別符號是ShockwaveFlash.ShockwaveFlash。知道唯一識別符號後,就可以編寫類似下面的函式來檢測IE中是否安裝相應的外掛了。

// 檢測IE中的外掛
function hasIEPlugin(name) {
    try {
        new ActiveXObject(name);
        return true;
    } catch(e) {
        return false;
    }
}

擴充套件:
MIME型別:多功能網際郵件擴充協議
在HTTP中,MIME型別被定義在Content-Type header,
MIME意為多目Internet郵件擴充套件,它設計的最初目的是為了在傳送電子郵件時附加多媒體資料,讓郵件客戶程式能根據其型別進行處理。然而當它被HTTP協議支援之後,它的意義就更為顯著了。它使得HTTP傳輸的不僅是普通的文字,而變得豐富多彩。 每個MIME型別由兩部分組成,前面是資料的大類別,例如聲音audio、圖象image等,後面定義具體的種類。
外掛中的MIME
每個外掛物件本身也是一個MimeType物件的陣列,這些物件可以通過方括號語法來訪問。每個MimeType物件有4個屬性:包含MIME型別描述的description、回指外掛物件的enabledPlugin、表示與MIME型別對應的副檔名的字串suffixes(以逗號分隔)和表示完整MIME型別字串的type
2.3.針對每個外掛分別做檢測函式(相容IE和其他瀏覽器)
以檢測Flash外掛為例:

function hasFlash() {
    var resultFlag = hasPlugin("Flash");
    if (!resultFlag) {
        resultFlag = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
    }
    return resultFlag;
}

3.navigator.plugins.refresh方法
navigator.plugins.refresh():用於重新整理最新安裝外掛plugins的集合
navigator.plugins.refresh(true):更新外掛集合,以及重新載入包含外掛集合的所有頁面