用Javascript判斷IE是否已經安裝Activex插件和禁用ActiveX

<script>
function DetectActiveX()
{
try {
var comActiveX = new ActiveXObject('V2.V2Ctrl.1'); // 判斷IE是否已經安裝視頻插件
} catch (e) {
return false;
}
return true;
}
 
if(DetectActiveX()==true){
alert("插件安裝");
}else{
alert("插件未裝");
}
</script>

只要控件已經安裝,那麼創建肯定會成功(如果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;
   }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章