JavaScript可以检查ActiveX控件的版本而不加载它吗?

时间:2011-07-25 21:29:37

标签: internet-explorer activex versioning upgrade restart

有没有办法向IE询问它安装和启用了哪个版本的ActiveX控件而没有实际加载有问题的控件?我希望在其他浏览器中有类似于navigator.mimeTypes的东西,我可以在不触及插件本身的情况下获取有关插件的元数据。我有控件的CLASSID及其servername / typename(如果我想加载和实例化,我可以pass to new ActiveXControl(),我没有);我几乎可以肯定得到我需要的任何其他识别钥匙。

我知道我可以instantiate the object and use a home-grown GetVersion()-type call向它询问版本,但是在那种情况下我加载了控件。这是不好的,因为(至少在Win7上的IE9中),如果IE已加载ActiveX控件,然后提示从cab文件安装较新版本,它将告诉用户重新启动他们的计算机之前它将允许访问控件。如果您只是重新启动IE,它似乎工作正常,但我们无法确切地告诉用户只是忽略提示。

此时我猜测的答案是“你不能这样做; IE和ActiveX是天启的两个骑士”,但我想我会把它放在那里。

1 个答案:

答案 0 :(得分:1)

我没有尝试过这个,但你可能会和条件评论一起破解。

this blog entry开始,附加组件可以注册带有名称和编号的版本字符串,然后将应用标准的IE条件注释。如果你想用JavaScript开始,你可以(抱歉顽皮),使用document.write写出标签周围的条件评论,然后在适当的情况下触发。

同样,由于我没有尝试过这个,所以IE可能不会处理document.write案例中的条件注释,但希望它可以。

最后,要注意conditional comments are going away in IE 10,所以这可能不会起作用,但这是未来你可以解决的问题。