1. ホーム
  2. javascript

[解決済み] swfobject.embedSWFが動作していない?

2022-02-13 17:10:58

質問

SWFObjectを使ってHTML文書にFlashアニメーションを埋め込む以下のコードでは、代替コンテンツしか表示されません。なぜでしょうか?

<!DOCTYPE html>
<html>
    <head>
        <title>Adding a Flash Movie</title>
        <script type="text/javascript"
                src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js">
        </script>
        <script type="text/javascript">
            swfobject.embedSWF("flash/bird.swf", "bird", "400", "300", "8.0.0");
        </script>
    </head>
    <body>
        <div id="bird">
            <p>An animation of a bird taking a shower</p>
        </div>
    </body>
</html>

Chrome、IE、Firefoxはいずれも単に An animation of a bird taking a shower .

コードは サンプル 書籍より HTML & CSS: ウェブサイトの設計と構築 .

解決するには?

SWFObject 2.2が正常に動作しなくなりました。その のバグは、SWFObject はすでにGitHubで報告されていますが、このライブラリはメンテナンスされていません。

Chrome 55から始まった新しい「HTML by default」Flashポリシーは、SWFObjectがFlashがインストールされているかどうかを検出するために使用する変数を初期化しません。具体的には navigator.mimeTypes を含まなくなりました。 application/x-shockwave-flash ただし、ユーザーがFlashを有効にしている場合はこの限りではありません。他のブラウザーでも クリックトゥラン起動方式 の一部として導入された フラッシュ・エンド・オブ・ライフ .

現時点では、最も良い方法は、単に <object> を使ってFlashを埋め込むことができます。例えば

<object type="application/x-shockwave-flash" data="app.swf">
    <param name='movie' value="app.swf"/>
    <param name='bgcolor' value="#999999"/>
    <param name='FlashVars' value="var1=Hello&var2=Goodbye" />
    <param name='allowscriptaccess' value="sameDomain"/>
</object>

なお、(1) .swfは2か所で指定されている (2)指定されているのは movie パラメータは必須です。他のパラメータは、可能な例としてここに示されています。