利用javascript判斷瀏覽器是否已經安裝ActiveX控件和是否禁止運行ActiveX控件


從微軟給IE打上SP2以後,當IE在打開一些含有ActiveX控件的網頁是,不再像以前那樣,彈出提示框,讓用戶選擇是否安裝控件;現在默認情況下給隱藏起來,普通用戶根本不知道是怎麼回事。公司產品同樣也遇到這樣的問題,唯一的辦法就是將控件做成一個exe文件,供用戶下載手動安裝註冊;這樣就需要做一個檢測,檢測要是用戶沒有安裝控件的話就提示用戶用戶下載安裝,要是安裝了就直接轉到相關頁面。想了很多辦法,最後找到一種比較合理的解決方式。由於我們現在經常使用的ajax技術,它實際上就是一種com組件,通過接口實現發送請求和獲取數據,那麼我們要使用ajax,就必定要創建這樣一個com組件,所以我們可以從這裏入手來解決檢測普通控件是否被攔截的問題。

   javascript創建ActiveX控件方式如下:

function DetectActiveX()
 {
    try
    {
       var comActiveX = new ActiveXObject(
控件名稱);   
    }
    catch(e)
    {
       return false;   
    }
    return true;
 }

    只要控件已經安裝,那麼創建肯定會成功(如果IE設置爲禁用ActiveX則會失敗),如果控件沒有安裝則會失敗。這是一種簡單的檢測方式。那麼控件名稱怎麼知道呢?大家在寫一個com組件的時候,都有一個對應的CLSID。打開自己的註冊表(自己系統中已經安裝了控件),在HKEY_CLASSESS_ROOT中查找,輸入控件對應的CLSID,會在該目錄下的一個叫CLSID的目錄中找到對應控件的註冊信息,打開該節點,其中有一項是ProgID,其對應的值就是創建該控件時所要用的名稱,這樣你就可以方便創建和檢測你自己所設計的控件了。

       由於IE不允許javascript訪問系統功能,所以我們不能夠對IE的相關設置做一個直接的訪問,那麼根據我們上面的檢測試試,我們可以輕鬆的判定IE是否禁止運行ActiveX控件,這也是非常有用的一點,因爲很多提示我們可能要提示用戶由於什麼什麼原因,而導致不能使用某項ActiveX控件的功能。那麼我們如何來進行判斷呢,還記得我剛開始提到的ajax這個東西吧,這個東西不僅能帶來更好的用戶交互功能,同時也能夠用在我們檢測瀏覽器是否禁止運行ActiveX 控件目的上來。因爲ajax是由相關的com組件支持,不管是IE,Firefox,Netscape,Opera等其他瀏覽器,都有相應的實現,因爲了是瀏覽器的標準。所以我們只要寫一個通用的,支持各種瀏覽器創建ajax 所要用到的xmlhttp對象即可,如果能創建成功,那麼證明IE一切OK,如果不成功則給出提示,其檢測函數相信大家已經再熟悉不過了,只不過我們現在的目的不一樣了,呵呵。

function DisActiveX()
   { 
      //xmlhttp
對象
      var kXmlHttp = null;    
      try
      {
         //
非微軟IE支持的xmlhttp對象
        if (typeof XMLHttpRequest != "undefined")
        {
           kXmlHttp = new XMLHttpRequest();
           return true;
        }     
      }
      catch(e)
      {  }
      //
微軟IE支持的xmlhttp對象
      var aVersionhs = ["MSXML2.XMLHttp.5.0",
          "MSXML2.XMLHttp.4.0",
          "MSXML2.XMLHttp.3.0",
          "MSXML2.XMLHttp",
          "Microsoft.XMLHttp"];
      //IE
創建方式
      for (var i = 0; i < aVersionhs.length; i++)
      {      
         try
        {
           kXmlHttp = new ActiveXObject(aVersionhs[i]);
           return true;
        }
       catch(e)
        { }      
      }
    return false;
   }

發佈了15 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章