0

我正在使用 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。非常感谢解决此问题的任何帮助:)

4

1 回答 1

0

这看起来像FireBreath javascript 检测示例中使用的方法,这就是我在插件中使用的方法。您并不完全清楚您使用的是什么版本。你是1.7吗?它肯定适用于 1.6 和 1.7。

如果您可以更具体地了解崩溃的位置,那么可能会更容易做出一些猜测;尝试附加调试器。有关如何强制 IE 成为单个进程以附加调试器的信息,请参阅 firebreath.org 上的“调试插件”页面。

于 2013-03-12T16:38:47.757 回答