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 に答える