如何检测用户在IE9中是否禁用了加载项?

时间:2011-03-25 14:10:41

标签: internet-explorer com activex internet-explorer-9 bho

IE9用户可以通过单击cog按钮并选择“Manage add-Ons”来禁用附加组件,例如浏览器帮助程序对象。我需要使用JavaScript检测是否以这种方式禁用了一个给定的加载项。

我似乎无法找到错误处理程序(<object ... onerror="myhandler(event)")来检测BHO已被禁用的方法。 errorEvent.type只是"error"。有什么办法吗?

我需要检测这种情况,因为只是让网页再次尝试安装BHO不会产生任何结果。 IE9只是忽略了请求。用户也没有显示任何警告,因此他和网页都不知道发生了什么。


一些背景知识:

Internet Explorer 9识别需要很长时间才能启动并向用户报告这些对象的浏览器帮助程序对象,并使用一个大按钮来禁用它们。这意味着很多用户将会禁用他们实际需要的BHO,只要有点击大按钮的冲动。

这也意味着我的公司遇到了一些麻烦,因为我们制作了一个由大量客户使用的BHO,有时(但并不总是)被认为太慢了。我们正在努力让它更快地启动。但与此同时,我们需要一些方法来检测用户是否已禁用我们的BHO并要求他们再次启用它。

2 个答案:

答案 0 :(得分:3)

没有脚本可访问的机制可以让您可靠地区分未安装的加载项与已安装和禁用的加载项。

除非BHO明确公开DOM可访问的属性,否则页面通常也无法知道BHO是否已安装,即使它已启用。

您可以使用window.external.msActiveXFilteringEnabled() API检测ActiveX过滤是否禁用 ActiveX 加载项。

答案 1 :(得分:0)

埃里克 你怎么看待这种伎俩?

  • 该插件会将脚本注入用户访问的每个页面。
  • 一旦大约一秒钟,脚本会向加载项发送“心跳请求”消息。附加组件应发送“已确认”响应。
  • 如果加载项没有响应,则脚本会假定加载项已被禁用或卸载,并通知服务器。

(这个想法来自http://keep12on.com/2011/05/26/detecting-extension-uninstallations-on-chrome/

由于