2013-03-12 56 views
0

我使用FireBreath创建一个跨浏览器插件。在HTML测试页面中,我使用以下函数检测插件是否已安装,并在未检测到插件时启动MSI安装程序的下载。使用ActiveXObject创建FireBreath插件的一个实例

function checkPlugin(){ 
    var pluginInstalled = false; 
    if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)) { 
     // For IE 
     var pluginObject = null; 
     try { 
      pluginObject = new ActiveXObject('Test.TestPlugin'); 
      if(pluginObject){ 
       pluginInstalled = true; 
       //pluginObject.Dispose(); 
      } 
     } catch (e) { 
      // Cannot load the plugin. Most probably it's not installed 
      console.log(e.message); 
     } 
    }else{ 
     // For other browsers 
     pluginInstalled = (navigator.mimeTypes && navigator.mimeTypes["application/x-test"] && navigator.plugins["TestPlugin"]); 
    } 
    return pluginInstalled; 
} 

上述功能在除IE以外的所有其他浏览器上工作正常。当它试图使用ActiveXObject创建插件的实例时,它会导致IE 9和10崩溃。我已经注意到从FireBreath 1.4开始添加了对此功能的支持,但我相信我使用的是1.7版FireBreath的最新版本。任何帮助解决这个问题,非常感谢:)

回答

0

这看起来像FireBreath javascript detection example中使用的方法,这就是我在我的插件中使用的。您对使用的版本不完全清楚;你在1.7吗?它确实适用于1.6和1.7。

如果你可以更具体地了解它在哪里崩溃,可能更容易做出一些推测;尝试附加一个调试器。有关如何强制IE使用单一进程来连接调试器的信息,请参阅firebreath.org上的“Debugging Plugins”页面。

相关问题