株式会社antsのホームページへようこそ。

ActiveXコントロールの挙動変更まとめ

0
Posted in Lab. By antsinc

「Microsoft Internet ExplorerのActiveXコントロールの挙動の変更」(マイクロソフト サポート技術情報 812945)によって、2006年2月以降、従来の方法でHTMLに組み込んだSWFはクリックするまでインタラクティブな機能がアクティブにならなくなったことはよく知られています。

■ActiveXコントロールの警告
ActiveXコントロールのアクティブ化

もう少し詳しく説明しておきましょう。従来は一般的な外部リソースのHTMLページへの埋め込みに<APPLET>タグ、<OBJECT>タグ、<EMBED>タグを利用していました。上記サポート技術情報の修正プログラムが適用された環境でも、従来どおりにこれらのタグによる埋め込みは可能です。ただし、Windows上のInternet Explorerで閲覧する場合、ユーザー操作を必要とするリソースを埋め込む場合に限って、ユーザー操作を受け付けるためにクリックが1回要求されるようになりました。

この修正プログラムは、2006年6月以降、毎月第2水曜日公開のマイクロソフトの月例セキュリティ情報でリリースされる「Internet Explorerの累積的修正」に含まれている修正内容となっています。つまり、Internet Explorerのセキュリティ修正プログラムを適用した環境は、例外なくActiveXコントロールの挙動が変更されたことになります。

アクティブ コンテンツのHTMLページへの埋め込み方法

まず、マイクロソフトがこの修正プログラムをリリースした際にあわせて公開した解決策を調べてみましょう。

■ActiveX コントロールのアクティブ化(マイクロソフト)
http://www.microsoft.com/japan/msdn/workshop/author/dhtml/overview/activating_activex.aspx

この技術情報によると、<APPLET>、<OBJECT>、<EMBED>の3つのタグによるActiveXコントロールの埋め込みが問題になるようです。どのような対処法があるのか、問題となるDHTMLイベント(Flashには関係ありませんが)などについて詳細に記載されています。

この問題の回避策ですが、マイクロソフトの技術情報によると、innerHTMLとJScriptを使ってHTMLにリソースを読み込む方法が提示されています。まずは従来型のHTML書法です。

<Invalid.html>

<html>
  <body>
    <div>
      <object classid="clsid:D27CDB6E..." ...>
        <param name="movie" value="foo.swf">
      </object>
    </div>
  </body>
</html>

次に、今後推奨されるSWFをインラインで読み込むためのHTMLソースとJScriptをお見せしましょう。

<Sample.html>

<html>
  <head>
    <script src="foo.js" type="text/javascript"></script>
  </head>
  <body>
    <div>
      <script type="text/javascript">RunFoo();</script>
    </div>
  </body>
</html>

<foo.js>

function RunFoo()
{
  document.write('<object classid="clsid:D27CDB6E..." ...>\n');
  document.write('<param name="movie" value="foo.swf" />\n');
  document.write('<object>\n');
}

この情報は、次のアドビ システムズの技術情報で取り上げられています。

■アクティブコンテンツのアップデートに関する記事(アドビ システムズ)
http://www.adobe.com/jp/devnet/activecontent/articles/devletter.html

このようなスクリプトを毎回手作業で作成して準備するのは、とても手間がかかります。そこで、Flashアップデータをアドビ システムズが公開しています。

■Macromedia Flashサポートセンター(アドビ システムズ)
http://www.adobe.com/jp/support/flash/downloads.html#flash8

このアップデータをインストールしてパブリッシュ時にHTMLファイルとJSファイルを同時に書き出すようにしておけば作業を大幅に軽減できるでしょう。