javascript之BOM對象(三其他對象)
一、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對象(三其他對象)