【JS第36期】BOM-navigator對象

Navigator 對象包含有關瀏覽器的信息。下表列出全部navigator對象的方法及屬性。前端

屬性或方法 描述 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 瀏覽器的版本 3.0+ 1.0+ 1.0+ 7.0+
buildID 瀏覽器編譯版本 - 2.0+ - -
cookieEnabled 表示cookie是否啓用 4.0+ 1.0+ 1.0+ 7.0+
cpuClass 客戶端計算器中使用的cpu類型 4.0+ - - -
javaEnabled 表示當前瀏覽器是否啓用了java 4.0+ 1.0+ 1.0+ 7.0+
language 瀏覽器的主語言 - 1.0+ 1.0+ 7.0+
mimeTypes 在瀏覽器中註冊的mime類型數組 4.0+ 1.0+ 1.0+ 7.0+
onLine 表示瀏覽器是否鏈接到因特網 4.0+ 1.0+ - 9.5+
opsProfile 彷佛早就不用了。查不到相關文檔 4.0+ - - -
oscpu 客戶端計算機操做系統或使用的cpu - 1.0+ - -
platform 瀏覽器所在的系統平臺 4.0+ 1.0+ 1.0+ 7.0+
plugins 瀏覽器中安裝插件信息的數組 4.0+ 1.0+ 1.0+ 7.0+
preference() 設置用戶首選項 - 1.5+ - -
product 產品名稱 - 1.0+ 1.0+ -
productSub 關於產品的次要信息 - 1.0+ 1.0+ -
registerContentHandler() 針對特定的mime類型將一個站點註冊未處理程序 - 2.0+ - -
registerProtocolHandler() 針對特定的協議將一個站點註冊爲處理程序 - 2.0+ - -
securityPolicy 已廢棄。安全策略的名稱 - 1.0+ - -
systemLanguage 操做系統的語言 4.0+ - - -
taintEnabled() 已經廢棄。表示是否容許變量被修改 4.0+ 1.0+ 7.0+
userAgent 瀏覽器的用戶代理字符串 3.0+ 1.0+ 1.0+ 7.0+
userLanguage 操做系統默認語言 4.0+ - - 7.0
userProfile 藉以訪問用戶我的信息的對象 4.0+ - - -
vendor 瀏覽器的品牌 - 1.0+ 1.0+ -
vendorSub 有關供應商的次要信息 - 1.0+ 1.0+ -

檢測插件

// 檢測插件(ie無效)
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;
}

// 檢測 flash
hasPlugin('Flash');
複製代碼

在ie中檢測插件可使用專有的ActiveXObject 類型,並建立一個特定的插件實例。ie中是以com對象的方式實現的插件的,而com對象使用惟一標識符來標識。所以,檢測插件必須知道其com標識符。如:java

// 檢測ie中插件
function hasIEPlugin(name) {
  try {
    new ActiveXObject(name);
    return true;
  } catch(e) {
    return false;
  }
}
// 檢測flash
hasIEPlugin('ShockwaveFlash.ShockwaveFlash')
複製代碼

上例中之因此用try...catch是由於建立未知com對象會致使拋出錯誤。這樣,若是實例化成功返回true,不然拋出錯誤,返回false。因爲兩種檢測方式差別比較大,因此針對每個插件分別建立檢測函數。如:數組

// 檢測全部瀏覽器flash

function hasFlash() {
  var result = hasPlugin('Flash');
  if (!result) {
    result = hasIEPlugin('ShockwaveFlash.ShockwaveFlash')
  }
  return result;
}
// 檢測flash 
hasFlash() 
複製代碼

註冊處理程序

registerContentHandler() 有三個參數:要處理的mime類型、能夠處理該mime類型的頁面的url、應用程序的名字。如:瀏覽器

navigator.registerContentHandler('application/rss+xml', 'http://www.somereader.com?feed=%s', 'Some Reader');
複製代碼

registerProtocolHandler()有三個參數:要處理的協議、能夠處理該頁面的url、應用程序的名字。安全

navigator.registerProtocolHandler('mailto', 'http://www.somemailclient.com?cmd=%s', 'Some Mail Client')
複製代碼

若有侵權,請發郵箱至wk_daxiangmubu@163.com 或留言,本人會在第一時間與您聯繫,謝謝!! bash

關注咱們
長按二維碼關注咱們,瞭解最新前端資訊
相關文章
相關標籤/搜索