明示的に実行を許可するまで、GoogleChromeブロックJavaプラグイン。https://www.google.com/support/chrome/bin/answer.py?answer=1247383&hl=en-US
ChromeがJavaScriptをブロックしているかどうかをJavaScriptで検出するにはどうすればよいですか?
明示的に実行を許可するまで、GoogleChromeブロックJavaプラグイン。https://www.google.com/support/chrome/bin/answer.py?answer=1247383&hl=en-US
ChromeがJavaScriptをブロックしているかどうかをJavaScriptで検出するにはどうすればよいですか?
Chromeだけでなく、クリックして再生する機能を採用しています-Firefox(Javaはブロックリストを介してクリックして再生します)、Opera(ターボモードはすべてのプラグインをクリックして再生します)...そしてアドオンもあります/プラグインが自動的に実行されないようにする拡張機能。
それらのどれも、コンテンツスクリプトからプラグインがクリックして再生されていることを知ることはできません。したがって、理想的には、より一般的な方法で問題に対処します。
navigator.plugins
プラグインがインストールされていない場合(を参照)と他の場合を区別することができます。
...そしてそれに基づいて「ロードに失敗したかブロックされた」と想定します。これについては、MDNにベストプラクティスのページがあります。
その区別は通常十分に良いはずです。たとえば、SoundCloudがクリックして再生するプラグインをどのように処理するかを確認してください。
情報の正確性を向上させるために2013.03.15を編集した回答
navigator
サポートされているプラグインのリストは、オブジェクトの配列として利用できます。
navigator.plugins
このAPIは非標準ですが、最近のすべてのブラウザーで実装されています。Internet Explorerのサポートは少なくともIE7に戻りますが、古いバージョンのOperaでは利用できません。
navigator.plugins
この基本構造があります:
PluginArray [
...
Plugin {
description: "Java Plug-In 2 for NPAPI Browsers"
filename: "JavaAppletPlugin.plugin"
length: 17
name: "Java Plug-In 2 for NPAPI Browsers"
},
...
]
これは、ループして、指定された文字列のプロパティをnavigator.plugins
チェックする関数です。name
戻るtrue
かfalse
、見つかった場合。
function pluginEnabled(name) {
var plugins = navigator.plugins,
i = plugins.length,
regExp = new RegExp(name, 'i');
while (i--) {
if (regExp.test(plugins[i].name)) return true;
}
return false;
}
そのように使用します(大文字と小文字は区別されません):
pluginEnabled('java');
pluginEnabled('flash');