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;
}