クライアントからの報告で初めて知ったIEの不具合っぽい現象。
「Windows Update をしたらFlashが表示されなくなったんですか・・・」と。
Adobe公式サイトから最新版のFlashPlayerを入れなおしてもダメなんだそうで。。
色々と先方の環境を聞いてみたところ、SWFObjectはダメで、Adobe公認のAC_RunActiveContent.jsの場合は問題なし。
これって SWFObject のバグ?かと思いながらもさらに調査。
すると、どうもブラウザから FlashPlayer のバージョンを取得できないのが原因。
SWFObjectの場合、こんな感じにして、コンストラクタ引数の5番目で対象バージョンを指定できるんだけど、それに満たない場合は HTML 置換が行われないのは周知の事実。
解決方法としては、
[ 追記 2008/02/22 ]
メディアテクノロジーラボさんの方でもっと詳しい点をまとめていますので紹介します。 ActiveX とはみなされないからなんですってね。うーむ、わからん・・・。
IE7でswfobjectが動作しない件 : Media Technology Labs (MTL) : メディアテクノロジーラボ ブログ
var so = new SWFObject("test.swf", "movie", "400", "200", "8", "#FFFFFF");
その内部処理において、FlashPlayerのバージョンをJSで判断してるようで、今回の不具合の場合はそれが取得できないらしく、結果としてFlashが表示されないみたい。
試しに次のコードで単体テストをしてみたら、先方の環境でやっぱり取得できませんでした。。
var version = 0;
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.indexOf("Windows") != -1) ? true : false;
if(navigator.plugins["Shockwave Flash"]){
var tmp = navigator.plugins["Shockwave Flash"].description.split(" ");
for(i=0; i<tmp.length; i++){
if(!isNaN(parseInt(tmp[i]))){ version = tmp[i];}
}
}
else if(isWin && isIE){
version = new ActiveXObject("ShockwaveFlash.ShockwaveFlash").FlashVersion();
version = Math.floor(version / 0x10000);
}
alert(version);
参ったなと思って調べてみると、SWFObject のフォーラムで同様の現象が報告されて議論されてます。
deconcept › Corrupt Flash Player install after IE 7 upgrade
この問題はIE7自身よりも、WindowsやIE、FlashPlayerのアップデートに生じる問題だそうで、FlashPlayer更新の際に過去の古いバージョンを消せずにインストールするからっぽいです。
複数のPlayerがあるからバージョンが取得できないんでしょうか。
解決方法としては、
1. Quit all open programs. This step is important because other programs may be using the Flash Player, and if they are, the uninstaller will fail silently.と、一度アンインストーラで完全に削除してから再インストールすればよいようです。 クライアントにその旨を伝えて、試していただいたところ、無事修正完了っ!やったっ!! まったくマイクロソフトさん、困ります~ ・・・でも、フォーラムでそれでも直らない、という報告があるのが気になるぅ~ ちなみに、SWFObjectの作者の人、今 YouTube の中で働いているんですね。スゴいなぁ。 YouTubeにも同様の現象の人のためのページがありました。 YouTube - Broadcast Yourself.- The video won't play—what's wrong? + Video たまにはタメになりそうなエントリを。
2. Run the Adobe Flash Player Uninstaller.
3. Reinstall your Flash player.
[ 追記 2008/02/22 ]
メディアテクノロジーラボさんの方でもっと詳しい点をまとめていますので紹介します。 ActiveX とはみなされないからなんですってね。うーむ、わからん・・・。
IE7でswfobjectが動作しない件 : Media Technology Labs (MTL) : メディアテクノロジーラボ ブログ

はじめまして!
今日、flashを入れ替えたら、表示されなくなったので、ぐぐったらこちらへたどりつきました。
そういうことだったのですね。
解決策?を試してみようかと思いますが、自分の環境下ではみることができても、お客様からはみれないわけで・・困ったものですね。