我正在使用FireBreath创建一个跨浏览器插件。在HTML测试页面中,我使用以下函数来检测插件是否已安装,并在未检测到插件的情况下启动MSI安装程序的下载。
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开始添加了对此功能的支持,但我相信我使用的是最新版本的FireBreath 1.7。非常感谢任何帮助解决这个问题:)
答案 0 :(得分:0)
这看起来像FireBreath javascript detection example中使用的方法,这就是我在插件中使用的方法。你不清楚你正在使用什么版本;你在1.7吗?它肯定适用于1.6和1.7。
如果你可以更具体地说明它崩溃的地方可能更容易做出一些猜测;尝试附加调试器。有关如何强制IE为单个进程以附加调试器的信息,请参阅firebreath.org上的“Debugging Plugins”页面。