山本ゆうごです。
現在調査中ですが、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が最新バージョンだとすると、無印はその古いバージョンなのか?
しかしながら、別の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)
僕の周りではIE6でも発生してる人がちらほらいました。
IE6も、一旦FlashPlayerをアンインストールしてから、Playerを入れなおすと直りました。
あと、IE6の場合は、「ツール」→「アドオンの管理」で
Shockwave Flash Object 選んで
「ActiveX の更新」ボタンを押すと解決しました。
IE7にはこのボタンはないようです。。。
投稿者: SMD | 2008年02月26日 15:46
日時: 2008年02月26日 15:46
>僕の周りではIE6でも発生してる人がちらほらいました。
なるほど。IE7限定の現象じゃないんですね。
投稿者: 山本ゆうご | 2008年02月26日 16:03
日時: 2008年02月26日 16:03
私もPC(XP SP2 + IE6)で同じ現象が発生しました。
単純に最新版にすれば大丈夫かなと、
インストールしたのですが動かぬまま…。
(バージョンテストでは古いバージョンが表示)
一旦専用のアンインストーラを実行し、
再度Playerを入れ直しても動いてくれませんでした。
今度はMacromedフォルダ内を空っぽにしてから
再度Playerを入れようやく解決しました…。
投稿者: Tadao | 2008年02月27日 00:00
日時: 2008年02月27日 00:00
なるほどなるほど。
これですね。
[228703]Windows 版 Internet Explorer でインストールに失敗したら
http://support.adobe.co.jp/faq/faq/qadoc.sv?228703+002
投稿者: 山本ゆうご | 2008年02月27日 13:53
日時: 2008年02月27日 13:53