本文介绍如何使用JavaScript动态创建DOM元素并尝试实例化指定CLSID的ActiveX控件,通过检查特定函数是否存在来判断控件是否已安装。该方法利用try-catch处理异常,并在检测完成后清理临时节点,确保页面状态不受影响。
ActiveX控件检测函数定义
定义一个名为detectPlugin的函数,接收CLSID和functionName两个参数。
{
创建并插入隐藏容器
使用document.createElement方法创建一个div元素,设置其id为pluginDiv,并通过内联样式style="display:none"将其隐藏。
将该div元素插入到document.body中,作为后续检测的容器。
实例化ActiveX对象
设置pluginDiv的innerHTML属性,添加一个object标签,指定id为objectForDetectPlugin,并通过classid属性绑定传入的CLSID。
执行检测与异常处理
开始尝试执行检测逻辑,使用try块包裹可能抛出异常的代码。
{
使用eval函数动态调用objectForDetectPlugin对象的指定functionName属性,判断其返回值是否为undefined。
{
如果eval结果为undefined,说明控件未正确实例化或不存在,调用pluginDiv.removeNode(true)方法删除该div及其所有子元素。
返回false,表示ActiveX控件未安装或检测失败。
}
如果eval结果不为undefined,进入else分支。
{
同样调用pluginDiv.removeNode(true)方法,清理临时创建的div元素及其子元素。
返回true,表示ActiveX控件已安装且检测成功。
}
}
捕获try块中可能发生的异常,处理检测过程中出现的错误。
{
返回false,表示因异常导致检测失败,控件可能未安装或存在其他问题。
}
}