IE6 のアクティブコンテンツ関連の動作を変更するパッチが公開されましたが(関連情報)、それに伴い、対応方法に関連する記事がUS のアクティブコンテンツデベロッパーセンターにて公開されました。
IE の変更に対応するためのサンプルファイルはこちらからダウンロードできます。( ZIP ファイル 4K) これには以下のファイルが含まれています。
- AC_RunActiveContent.js: Flash や Shockwave コンテンツを表示する際に使用します
- AC_ActiveX.js: その他のアクティブコンテンツ用です
- SampleActiveContent.html: 上2つのJavaScript ファイルの使用例です
swf を表示するにはは AC_RunActiveContent.js ファイル内に定義されている AC_FL_RunContent 関数を Object タグの代わりに使用します。関数の引数にはパラメータの名前と属性を交互に記述します。
例として以下のような HTML ファイルがあるとします。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Before</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"
width="369" height="113">
<param name="movie" value="flash.swf">
<param name="quality" value="high">
<embed src="flash.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="369" height="113"/>
</object>
</body>
</html>
これを書き直すと以下のようになります。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>After</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" src="after/AC_RunActiveContent.js"></script>
</head>
<body>
<script type="text/javascript">
AC_FL_RunContent(
'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0',
'width','369',
'height','113',
'src','flash',
'quality','high',
'pluginspage','http://www.macromedia.com/go/getflashplayer',
'movie','flash' );
</script>
<noscript>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"
width="369"
height="113">
<param name="movie" value="flash.swf">
<param name="quality" value="high">
<embed src="flash.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="369" height="113"/>
</object>
</noscript>
</body>
</html>

こんにちは。
情報提供ありがとうございます。
Flex Builder 2 β2がbinフォルダに出力したhtmlを見ると、この記事のAC_FL_RunContent()を使用しているようですが、Flex Builder 2 および Flex Data Services の β2 では、すでに IE6 のパッチに対応済み、ということでしょうか?
Egeta さん、こんにちは。
Beta2 に含まれるものは少しバージョンが古いのですが、IE6 のパッチに対応するものです。最終的な仕様は製品の発表をお待ちいただくとして、Flex2 は FlexBuider2、FDS2 ともに IE6 のアップデートには対応する予定とのことです。
いつも濃い情報ありがとうございます。
さてサンプルコード(after)はそのままではうまく表示されませんでした。
AC_RunActiveContent.jsを参照しているscriptタグを
(簡略終了タグ形式でなく)閉じタグをつける形にすると表示されました。
uenon さん
ご指摘ありがとうございます。そうですね。早速直しておきました。
こんにちは
元のHTMLにインクルードしていたjavaスクリプトを
swfから叩いていたのですが、上の方法にしたところ
javaスクリプトが叩けなくなりました。
そのへんも書き換えが必要なんでしょうか
yu さん、こんにちは。
ご紹介した方法は swf が表示されるまでを変えるもので、表示後の動作は本当は変わらないはず..です。
swf が表示された時点での HTML のソースを見てみて、変更前の HTML と比較してみてはいかがでしょうか?
修正するとflashそのものが表示されません…。
諦めました。flashを外す事にします。