function detectPlugin(CLSID,functionName)
{
var pluginDiv = document.createElement("<div id=\"pluginDiv\" style=\"display:none\"></div>")
document.body.insertBefore(pluginDiv);
pluginDiv.innerHTML = '<object id="objectForDetectPlugin" classid="CLSID:'+ CLSID +'"></object>';
try
{
if(eval("objectForDetectPlugin." + functionName) == undefined)
{
pluginDiv.removeNode(true);//删除pluginDiv及其所有的子元素
return false;
}
else
{
pluginDiv.removeNode(true);//删除pluginDiv及其所有的子元素
return true;
}
}
catch(e)
{
return false;
}
}
这是通用的方法,只需要把唯一的Activex的clsid和任意一个属性或方法名传进来就可以判断了。(找了两个小时才找到 -_-!)
下附测试代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>~~~~</title> </head> <script language="javascript"> function openreg(){ if(detectPlugin('A0F5EA74-8C04-4AF7-B7EA-DCB43F53ED45','CurVersion')==false) { alert("控件未安装"); } } function detectPlugin(CLSID,functionName) { var pluginDiv = document.createElement("<div id=\"pluginDiv\" style=\"display:none\"></div>") document.body.insertBefore(pluginDiv); pluginDiv.innerHTML = '<object id="objectForDetectPlugin" classid="CLSID:'+ CLSID +'"></object>'; try { if(eval("objectForDetectPlugin." + functionName) == undefined) { pluginDiv.removeNode(true);//删除pluginDiv及其所有的子元素 return false; } else { pluginDiv.removeNode(true);//删除pluginDiv及其所有的子元素 return true; } } catch(e) { return false; } } </script> <body> <p>通过浏览器打开Topteam客户端----测试</p> <p> <input type="button" value="进入系统" onclick="openreg();"/> </p> </body> </html>
|