1. 程式人生 > >javascript之BOM對象(三其他對象)

javascript之BOM對象(三其他對象)

名稱 res func 查詢 字符串 接收 ins Language cti

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