標籤:通過 系統 fun pre 描述 form blog tor back
一、navigator對象
navigator使用來識別瀏覽器的,是所有支援javascript的瀏覽器所共有的。與BOM的其他對象不同,每個瀏覽器的navigator對象都有一套自己的屬性。
常見的屬性名稱:
appName 完整的瀏覽器名稱
cookieEnabled 表示cookie是否啟用
onLine 瀏覽器是否連網
platform 瀏覽器所在的系統平台
plugins 瀏覽器所安裝的外掛程式資訊的數組
preference() 使用者的喜好設定
userLanguage 瀏覽器的預設語言
1、檢測外掛程式
對於非IE瀏覽器可以使用plugins數組進行檢查,該數組的每一項都包含了一下屬性 :
- name 外掛程式名稱
- description 外掛程式描述
- filename 外掛程式檔案名稱
- length 外掛程式所處理的MIME類型數量
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; } alert(hasPlugin("Flash"));
通過navigator.plugins數組得到了外掛程式數組,然後在外掛程式數組中查詢是否對應的外掛程式名。
對於IE瀏覽器的外掛程式檢測方法:
在IE中檢測外掛程式的唯一方式就是試用ActiveXObject類型,並嘗試建立特定外掛程式的執行個體。IE是以COM對象來檢測外掛程式的,COM對象是以唯一識別碼來確定對象的。
Flash外掛程式的唯一表示符為:ShockwaveFlash.ShockwaveFlash
function hasIEPlugin(name) { try{ new ActiveXObject(name); return true; }catch(ex) { return false; } } alert(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));
由於兩種差別太大,所以通常採用針對特定外掛程式做檢測演算法
//檢測所有瀏覽器的Flash外掛程式 function hasFlush() { var result=hasPlugin("Flush"); if(!result) { result=hasIEPlugin("ShockwaveFlash.ShockwaveFlash"); } return result; }
首先是對所有瀏覽器都採用hasPlugin函數檢測如果返回true就不用再檢測IE因為IE已經用hasPlugin檢測過了,否則要專門對IE進行檢測。
2、註冊處理常式:
navigator.registerContentHandler(mimeType, uri, title);//接收三個參數,要處理的MIME類型,可以處理該MIME類型的頁面的URL以及應用程式的名稱
navigator.registerProtocolHandler(protocol, url, title);//接收三個參數,協議名稱,可以處理相應請求的頁面的URL以及應用程式的名稱
這兩個方法可以讓一個網站指明可處理的類型。
二、screen對象
screen對象包含著瀏覽器視窗外顯示器的資訊,每個瀏覽器的screen對象都包含有不同的屬性
三、history對象
history對象儲存使用者上網的記錄,從瀏覽器視窗開啟的時候算起。history是window的屬性,每一個視窗或者架構都有一個history對象。
go();方法,接收一個整數值或者字串,表示前進或者後退的頁數或者前往的頁面
history.forward();前進1頁
history.back();後退1頁
javascript之BOM對象(三其他對象)