• お役立ち

Flashコンテンツの埋め込みにはswfobjectを使わずobjectタグを使うのが無難…?→swfobjectを使った上で代替領域に適切な補足を記載、が良さそう。

  • このエントリーをはてなブックマークに追加
  • LINEで送る

先日、ChromeとSafariでFlashコンテンツが表示されなくなってきたという話をしましたが、実は発端になったのは、swfobjectを使ってswfを埋め込んでいるウェブサイトで「プラグイン無し判定」されてしまったという事例でした。

…と、思っていたら、@clockmakerさんからタイムリーな情報が。

Let’s 検証

「これはやはりswfobjectか?」ということで、検証用のページを用意してみました。navigator.pluginsの値も表示させています。

このページを下記の手順で表示してみました。ブラウザはChrome 57.0.2987.133 (64-bit) for Windowsです。

  1. シークレットウィンドウを開く(キャッシュやCookieの影響を排除するため)
  2. chrome://site-engagement/を開き、「www.tonpoo.com」のサイトエンゲージメント指数を「0」に変更。
  3. 上記A~CのURLにアクセス

検証結果

結果は以下のとおりです(左からA、B、Cの順)。

Aでは「Flashの有効化を促す表示」が出ましたが、B・Cはいづれも「プラグイン無し判定」されてしまいました。

次に、サイトエンゲージメント指数を調整していきました。すると、指数の値を「4」にセットしたところで変化がありました。

A・Bではswfが表示されるようになりました。しかしCは引き続き「プラグイン無し判定」です。結局、Cは指数を「100」にセットしてもそのままでした。

Cで、代替コンテンツ中の「こちらをクリック」をクリックし、FlashPlayerのダウンロードページ(http://www.adobe.com/go/getflashplayer_jp)に遷移しようとすると、Flashの実行を求めるアラートが表示されました。

「許可」をクリックしたら、Cでもswfが表示されるようになりました。

さてここでサイトエンゲージメント指数を一旦「0」にリセットし、サイトに対するFlashコンテンツの表示設定も「グローバルのデフォルト値([確認])を使用」に戻します。

その上でCにアクセスしてみました。

「Flashの有効化を促す表示」…?navigator.pluginsの値にはShockwave Flashが…。一度Flash有効化してしまうと、リセットしても戻らないんでしょうか…。

まとめ

サイトエンゲージメント指数やらFlashの表示設定やらをわざわざリセットするのはエンジニアくらいだと思うので、一般ユーザーを想定した場合、「swfobjectは使わずobjectタグで埋め込むようにする」というのが当面はベストプラクティス…ということですかね…。

追記

サイトエンゲージメント指数とnavigator.pluginsの関係については様々な事例があるようで、@bkzenさんからは以下のような情報をいただきました。

ううむ、ますます謎です…。

さらに追記&当面の落とし所らしきもの

サイトエンゲージメント指数との連関の詳細は未だ不明ですが、そもそもこの指数はサイト運営側でどうにかできるものではありません。

当初はobjectタグで実装して、「プラグインの有効化を促す表示を出す」のが直感的でわかりやすくて良いかなと思ったんですが、iOSでアクセスするとアラートどころか何も表示されないので、これだとまずい。

ということで、「Flashコンテンツが素直に表示されない環境のユーザーがいる」ことを前提に、swfobjectを使ってswfを埋め込み、その代替コンテンツ領域に

  • このページはFlashコンテンツを使っている
  • iOS, Androidでは再生できない
  • PCユーザーでこの表示が出てる人は下記のボタンをクリックしてFlashを有効化してほしい
  • ボタンをクリックしても有効化のダイアログが出なかった場合は遷移先のページからFlashPlayerをダウンロードしてインストールしてほしい

…という補足の記述をしておくのが、落とし所っぽいです。

星虹思械BRICOLEUR

関連コンテンツ