9

クロムでフラッシュプラグインがブロックされているかどうかをjqueryまたはjavascriptを使用して確認するにはどうすればよいですか?

以下を使用して、無効になっているフラッシュプラグインを確認できます

((typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] == "object") || (window.ActiveXObject && (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) != false));

Chrome では、個別のプラグインを無効にするをクリックして、プラグインを個別に無効にすることができます。次に、プラグインを個別に無効にすると、上記のクエリが機能し、false が返されます。しかし、すべてのプラグインをブロックすると、true のみが返されます。したがって、プラグインがブロックされていることを検出する方法が懸念されます。

4

3 に答える 3

0

ブラウザがプラグインをブロックしているかどうかを確認する唯一の方法は、プラグインを呼び出して、それが返されるかどうかを確認することです。あなたの場合、これらの手順:

  1. フラッシュ プラグインがインストールされていることを確認します。
  2. いつものようにフラッシュ SWF を初期化します。
  3. プラグインが応答しているかどうかを通知するように設計された Flash 外部インターフェイスを介して関数を呼び出します。
  4. 応答する場合は、通常どおり続行します。
  5. 応答しない場合は、理想的には JavaScript ソリューションにフォールバックします。

これはブラウザのセキュリティ上の問題であるため、目的のプラグインがブロックされているかどうかを知らせる API に直接アクセスすることはできません。これが現在利用できる唯一の解決策かもしれないと思います。また、Chrome の最新バージョン (現在 54.0.2840.59) は、iframe で実行されている場合、すべてのフラッシュをブロックしていることに注意してください。

于 2016-10-19T16:59:30.657 に答える
0

唯一の信頼できる方法は、個々の Flash 要素を取得して、有効になっていることをブラウザに警告することです。ブロックされていないこと。

これを行うには、Flash ファイルの先頭で次のコードを使用します。

import flash.external.ExternalInterface;
ExternalInterface.call('flashHasLoaded','my-identifier');

これにより、ブラウザーで JavaScript 関数がトリガーされます。

<script type="text/javascript">
    function flashHasLoaded( optionalIdentifier ){
        alert("A flash file has started running");
        if(optionalIdentifier == "specific-thing") alert("Specific thing loaded - do something");
    }
</script>

これはすぐにはトリガーされず、Flash が読み込まれて実行が開始された場合にのみトリガーされることに注意してください。

于 2015-10-22T15:02:46.713 に答える