1. ホーム
  2. Blog
  3. IE7でswfobjectが動作しない件

IE7でswfobjectが動作しない件

山本 有悟

山本 有悟

コラム

山本ゆうごです。

現在調査中ですが、IE7の一部の環境でswfobjectが動作しないという現象がちらほら発生中。情報あればコメント願います。

swfobjectというのは、FlashのswfファイルをロードするためのJavaScriptライブラリのことです。結構よく使われています。

それが、IE7で動かないケースがある。そして私のPC(XP SP2 + IE7)で動かなくなりましたよと。

調べてみると、YouTubeではトラブルシューティングとして、「Flashプレーヤーのバージョンアップの時には前のバージョンを削除しないとダメ」とのこと。

http://www.google.com/support/youtube/bin/answer.py?answer=56115

そんなバカなと思って、「プログラムの変更と削除」を見ると

  • Adobe FlashPlayer 9 ActiveX
  • Adobe FlashPlayer ActiveX

と、なにやら二つ入っている。9が最新バージョンだとすると、無印はその古いバージョンなのか?

image

しかしながら、別のswfobjectが動いているPCをみると、同じようにプログラムには、FlashPlayer9とFlashPlayerの両方が混在してたりする。この条件だけで発症する現象ではなさそう。

swfobjectのどの部分でダメになっているかを調べると、Flashのバージョンを調べるときにActiveXとしてFlashPlayerを使っている。そこでActiveXとしてロードできないからエラーになる。swfobjctとしては「バージョンがわからない」という状態になる。

試しにswfobjectが動作しないIEのアドレスバーに

javascript:alert(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))

というJavaScriptをペーストすると、swfobjectが動作しないPCだとこの段階でエラーになる。正常な期待値は「[object]」というメッセージが出る。

swfの再生には必ずしもActiveXとしてロードする必要はなく、objectタグとかでも埋め込めるから、すべてのFlashサイトがNGになるという訳ではないところが問題のややこしいところ。

さらにややこしいのは、FlashPlayerはプログラムの追加としてインストールするほかに、objectタグからいい感じにインストールということがある(はず)。そうおもって、ブラウザから勝手にロードされるところをみるとやっぱりいた。

インターネットオプション>閲覧の履歴の設定ボタン>オブジェクトの表示ボタン

とたどるとC:\WINDOWS\Downloaded Program Filesというフォルダが開いて、そこにもFlashPlayerが居る。

つまり私のPCには、合計3つのFlashPlayerが入ってたことになり、どれが呼び出されているかよくわからない状態。

そして、私の環境の場合はC:\WINDOWS\Downloaded Program FilesからFlashPlayerのオブジェクトを削除すると、あっさりswfobjectが動作するようになった。アンインストール&インストールをユーザにやらせることに比べるとちょっと気が楽。ちなみにFlashPlayerそのもののアンインストールは結構敷居が高い。

http://www.adobe.com/jp/support/flashplayer/ts/documents/tn_14157.htm

そうはいっても、ユーザにローカルPCのオペレーションを強いるという点では、まだ不十分。原因も何となくだし、対応もいまいち。

サイト側の対応としてリスク回避をする方法も考えてみる。単にIEで「このコントロールをアクティブにするには」のメッセージを出さずに、Flashをアクティブにしたいというだけの理由でswfobjectを使っているのだとすると、swfobjectを使わないjsでその場をしのぐという手もある。

私の一番のお気に入りの対応はこちら。

MSIEのパッチKB912945の対応案 - 新しいJavaScriptの使い方を考える

HTML上はObjectタグで記述しておいて、IEだけobjectタグの領域をJavaScriptでちょこっと「書き換えたことにする」という方法です。

コメント (4)

私もPC(XP SP2 + IE6)で同じ現象が発生しました。

単純に最新版にすれば大丈夫かなと、
インストールしたのですが動かぬまま…。
(バージョンテストでは古いバージョンが表示)

一旦専用のアンインストーラを実行し、
再度Playerを入れ直しても動いてくれませんでした。

今度はMacromedフォルダ内を空っぽにしてから
再度Playerを入れようやく解決しました…。

  • 投稿者: Tadao

>僕の周りではIE6でも発生してる人がちらほらいました。

なるほど。IE7限定の現象じゃないんですね。

  • 投稿者: 山本ゆうご

僕の周りではIE6でも発生してる人がちらほらいました。
IE6も、一旦FlashPlayerをアンインストールしてから、Playerを入れなおすと直りました。

あと、IE6の場合は、「ツール」→「アドオンの管理」で
Shockwave Flash Object 選んで
「ActiveX の更新」ボタンを押すと解決しました。

IE7にはこのボタンはないようです。。。

  • 投稿者: SMD

トップへ戻る