« 「よいしょっ」って言いますよね | メイン | わんちゃんのライブ中継サイト「アイケントLive!」 »

IE7でswfobjectが動作しない件 このエントリーを含むはてなブックマーク BuzzurlにブックマークBuzzurlにブックマーク

山本ゆうごです。

現在調査中ですが、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でちょこっと「書き換えたことにする」という方法です。

トラックバック

このエントリーのトラックバックURL:

この一覧は、次のエントリーを参照しています: IE7でswfobjectが動作しない件:

» IE7+FlashPlayer9(?)でSWFが表示されないっぽい件 送信元 blog.naggg.jp
クライアントからの報告で初めて知ったIEの不具合っぽい現象。 「Windows ... [詳しくはこちら]

» SWFObjectを使用していてFlashが見れない件 送信元 FlashやWebにまつわるいろいろなこと
“Windows Update をしたらFlashがみれなくなった” とか、 “最新版のFlashPlayerを入れた... [詳しくはこちら]

» [Flash] IE7+SWFObjectでFlashが表示されなかった 送信元 それなりブログ
WinXP&IE7にて、SWFObjectを使って表示しているFlashが表示... [詳しくはこちら]

» SWFObjectでFlashのプラグイン判別が出来ない環境の作り方 for WinXP IE6/7 送信元 emzah Blog
Progressionの阿部さんがあつく語っているバージョン判定でも触れられている「「IE7でswfobjectが動作しない件」」(一説によると100分の... [詳しくはこちら]

» swfobject ver.2.x 送信元 Electric fruits blog
 Flashを読み込ませるときに、とても便利なツールが「SWFObject」です。とくに2.xになってからは、「Adobe express i... [詳しくはこちら]

コメント (4)

SMD:

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

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

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

山本ゆうご:

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

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

Tadao:

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

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

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

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

山本ゆうご:

なるほどなるほど。

これですね。

[228703]Windows 版 Internet Explorer でインストールに失敗したら
http://support.adobe.co.jp/faq/faq/qadoc.sv?228703+002

コメントを投稿

※ 必ず利用規約をお読み頂き、同意の上送信して下さい。また、トラックバック元・リンク先の内容には、リクルートは一切責任を負いません。

※ 必ず利用規約をお読み頂き、同意の上送信して下さい。

MA5

最近のコメント

Tag cloud