ActiveXの動作変更

2006年4月12日に公開されたInternetExplorerのパッチを適用すると
WindowsXP以降に搭載されているInternetExplorerのActiveXの動作が変わり
閲覧者がアクティブ化するまでいじることができなくなります
マイクロソフト:InternetExplorerの変更に関する開発者向け情報

上記のリンクにも回避方法が載っていますが
macromediaが提供している方法を使うと簡単に複数のFlashに対応できます
マクロメディア:アクティブコンテンツデベロッパーセンター

 

上記の資料では判らない人向けにFlashに特化してまとめておきます

ここのページ内のサンプルファイルをダウンロードする

解凍して AC_RunActiveContent.js をFlashを設置しているページに置く
複数のHTMLから読み込むことも考えパスの書きやすい位置が良いでしょう

Flashを使用しているHTMLを開き
<head>内に以下の外部JavaScript呼び出し行を追加する

以下を<head>内に追加する

<script src="パス/AC_RunActiveContent.js" type="text/javascript"></script>

その後、今まで使用していた呼び出しタグを以下のように書き換える
以下はmabi手記で配布しているMabiPlayerの例です

従来のタグ

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="100" height="135" align="middle">
  <param name="allowScriptAccess" value="sameDomain" />
  <param name="movie" value="MabiPlayer.swf?file=music.mp3&pmode=0&loop=1&vol=80" />
  <param name="quality" value="autohigh" />
  <param name="wmode" value="transparent" />
  <param name="bgcolor" value="#ffffff" />
<embed src="MabiPlayer.swf?file=music.mp3&pmode=0&loop=1&vol=80" quality="autohigh" wmode="transparent" bgcolor="#ffffff" width="100" height="135" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</object>

書き換え後

<script type="text/javascript">
AC_FL_RunContent(
  'src','MabiPlayer?file=music.mp3&pmode=0&loop=1&vol=80',
  'width','100',
  'height','135',
  'bgcolor','#ffffff',
  'quality','autohigh',
  'wmode','transparent',
  'align','middle',
  'allowScriptAccess','sameDomain',
  'codebase','http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0',
  'pluginspage','http://www.macromedia.com/go/getflashplayer');
</script>

見ての通り配列二つを対にしてパラメータと値になっていますので
ほかに必要なパラメータがあれば配列に追加してやることで追加できます

srcパラメータにFlashのファイル名を指定しますが拡張子を削って指定します
今回の例のように後ろにパラメータがある場合
MabiPlayer.swf?file=music.mp3&pmode=0&loop=1&vol=80

MabiPlayer?file=music.mp3&pmode=0&loop=1&vol=80
となります

しかしこのままではJavaScriptをOFFにしていると何も表示されません
JavaScriptをOFFにしている人はActiveXもOFFにしている人がほとんどですが
noscriptに既存のタグを書いておくことで対応出来ます
(JavaScriptがOFFな閲覧者は既存の方法になるためアクティブ化が必要になります)

JavaScript OFF ActiveX ON対応

<script type="text/javascript">
AC_FL_RunContent(
  'src','MabiPlayer?file=music.mp3&pmode=0&loop=1&vol=80',
  'width','100',
  'height','135',
  'bgcolor','#ffffff',
  'quality','autohigh',
  'wmode','transparent',
  'align','middle',
  'allowScriptAccess','sameDomain',
  'codebase','http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0',
  'pluginspage','http://www.macromedia.com/go/getflashplayer');
</script>
<noscript>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="100" height="135" align="middle">
  <param name="allowScriptAccess" value="sameDomain" />
  <param name="movie" value="MabiPlayer.swf?file=music.mp3&pmode=0&loop=1&vol=80" />
  <param name="quality" value="autohigh" />
  <param name="wmode" value="transparent" />
  <param name="bgcolor" value="#ffffff" />
<embed src="MabiPlayer.swf?file=music.mp3&pmode=0&loop=1&vol=80" quality="autohigh" wmode="transparent" bgcolor="#ffffff" width="100" height="135" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</object>
</noscript>

タグの最後に / が入っているところがありますが
これはXHTML準拠のタグに入るもので通常のHTMLならば消しても問題ありません
(このままついていても問題ありません)