Chrome で現在有効となっている Flash Player が PPAPI(Pepper) Plugin かどうかを判断する
追記(7/11): 以下のような面倒なことしなくても Javascript だけでできました。 -> isPepperFlashPlayer (davidortinau / gist:4039375)
Google Chrome 標準の Flash Player Plugin (PPAPI Plugin) にはいろいろな問題がある。
そのため、もしユーザが Pepper Plugin が有効になっている状態でサイトを訪れた場合、Adobe謹製の Flash Player Plugin をインストールしてなおかつブラウザの設定で有効にしてもらうように誘導したい。
そのような動機から、Flash Player のタイプが Pepper Plugin かどうかを判別する swf を作成してみた。
SWF のソースコードとコンパイル
以下の ActionScriptコードを保存し mxmlc
コマンドでコンパイルする。
package {
import flash.display.Sprite;
import flash.system.Capabilities;
import flash.external.ExternalInterface;
/**
* Check Flash Player type is PPAPI Plugin (Google Chrome)
*/
public class CheckPepperFlashPlugin extends Sprite {
public function CheckPepperFlashPlugin() {
ExternalInterface.addCallback( "isPepper", isPepper );
}
private function isPepper():Boolean {
return Capabilities.manufacturer.toUpperCase().indexOf("PEPPER") > 0;
}
}
}
以下のようにコンパイル(要 Flex SDK )
$ mxmlc CheckPepperFlashPlugin.as
すると、 CheckPepperFlashPlugin.swf が作成される。
使ってみる
http サーバ で前述の swf ファイルと以下の HTML ソースコードをホストする。
<html>
<body>
Check Flash Player Type: <span id="plugin-type">(unknown)</span>
<object id="checkPepper" data="CheckPepperFlashPlugin.swf" type="application/x-shockwave-flash" width="0" height="0">
<param name="movie" value="CheckPepperFlashPlugin.swf"/>
<param name="AllowScriptAccess" value="always"/>
</object>
<script>
(function(){
// SWFの初期化が完了するのを待って渡された関数を実行
function waitForInitializingSWF(func) {
if (checkPepper && checkPepper.isPepper) {
func();
} else {
setTimeout(function() { waitForInitializingSWF(func); }, 100);
}
}
// ドキュメントの読み込み完了したら以下のコードを実行
window.onload = function() {
waitForInitializingSWF(function() {
var type = document.getElementById("plugin-type");
type.textContent = checkPepper.isPepper() ? "Google Chrome Pepper Plugin" : "Adobe Plugin";
});
};
})();
</script>
</body>
</html>
実行結果
FireFox
Google Chrome (PPAPI Plugin が有効の状態)
Google Chrome (PPAPI Plugin が無効の状態)
Author And Source
この問題について(Chrome で現在有効となっている Flash Player が PPAPI(Pepper) Plugin かどうかを判断する), 我々は、より多くの情報をここで見つけました https://qiita.com/snaka/items/cf51c91c9ef49b41c66f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .