2011-02-03 8 views
1

NPAPIプラグインがあり、Webページに埋め込む前にそのバージョンを検出したいと思います。バージョンが最新でない場合は、プラグインを更新するようにメッセージを表示する必要があります。Chromeブラウザでプラグインのバージョンを検出します。

は、今では問題はnavigator.plugins["myplugin"].versionはFirefoxで罰金ではなく、Chromeで動作することで、次のよう

if (navigator.mimeTypes && navigator.mimeTypes["application/myplugin"]) { 
{ 
    // some code here 

    if(navigator.plugins["myplugin"] && navigator.plugins["myplugin"].version >= latest_version) { 
     // we have the latest version (embed the plugin into web page) 
     document.write ("<object id='plugin'><embed ....></object>"); 
    } else { 
     document.write ("Show message here"); 
    } 

    // some code 
} 

に実装されています。 Chromeはversionプロパティを公開しません。 NPAPIコードで独自のプロパティを追加することはできますが、プラグインをページに埋め込む前にそれを使用する方法はわかりません。

回避策はありますか?事前に

おかげで、アンドリュー

答えて

1

は、私は、プラグインの多くは、名前または説明のいずれかでバージョン情報を持っている参照してください。埋め込み前にその情報にアクセスできるはずです。

+0

はい、Silverlightのように、バージョン番号を説明に入れることを考えました。しかし、私はよりエレガントな方法を探していたかった:-)とにかく、あなたの助言に感謝します。 – DReJ

+0

私はあなたの最善の策だと恐れています。 Safariは同じことをしているので、これはウェブキットの問題だと思います。 –

+0

はい、説明にプラグインのバージョンを設定する必要があります。手伝ってくれてありがとう。 – DReJ

1

私は実際に名前や説明ではなく、ファイル名にバージョン番号を入れました。この理由は、同じ名前、説明、およびMIMEタイプを持つ複数のプラグインがある場合、Firefoxは一般的に最新バージョンを使用するからです。古いバージョンのfirefoxはこれをどう扱うかが一貫していないので、通常はバージョン固有のサブディレクトリにnp ??? _ version.dllファイルを置くことさえあります。

これは少し痛みがありますが、すべてのNPAPIブラウザで一貫して同じように動作します。

+0

アドバイスありがとうございますが、それはシステム内のプラグインの1つのバージョンに過ぎず、すべてのリリースのプラグイン名を変更してプラグイン "地獄"のようなものを作成したくありません。 – DReJ

+0

これがポイントです。プラグイン名を変更しない場合は、ファイル名を変更します。もちろん、あなたはシステム内のプラグインの1つのバージョンに行くだけです...しかし、あなたがアップグレードすると、ブラウザで開くことは簡単ですし、それを削除することはできません。 – taxilian

0

バージョンを含むプラグインのJSAPIプロパティを作成できます。このプロパティは、javascriptから呼び出されたときにプラグインのバージョンを返します。したがって、ページにプラグインを挿入/埋め込みしようとすると、javascriptをチェックして適切な呼び出しを行うことができます。

関連する問題