Microsoft社(MS)が、Eolas社の特許を侵害したとして提訴された訴訟関連で、
「object、embed、および applet タグが読み込まれるたびに確認ダイアログを出す」
というActiveX対応がいよいよ現実のものになるようです。
MSのセキュリティ アドバイザリ (912945) によれば、今月の月例修正プログラムは12日、
あるいはそれよりも早くリリースされる予定ですが、これまで Windows Update で
「推奨される更新プログラム」として配布されてきたこのパッチ「KB912945」が、
他のセキュリティ修正と同梱され、「Internet Explorer 用の累積的なセキュリティ更新プログラム」
としてリリースされることになります。
対策としては、以前、下記のリンクにある記事でも書きましたが、
js外部ファイル化によって回避が可能です。
4月12日までは、あまり時間がありませんから、
対応がまだの方は早めの対処が必要です(パッチ適用後、一時的に元に戻す互換性維持のための更新プログラムも2ヶ月間限定で提供されるようですが、MSは今後この修正を戻す予定はないということで、外部.jsファイル化を推奨しています)。
2003.11 [9]FlashなどをIE仕様変更に対応させる
http://allabout.co.jp/internet/javascript/closeup/CU20031106/index.htm
2003.12 [13]FlashなどをIE仕様変更に対応させる 関数化
http://allabout.co.jp/internet/javascript/closeup/CU20031226/index.htm
// 書式 writeFlashHTML2('_属性名1=値','_属性名2=値','_属性名n=値',...)
// 例 writeFlashHTML2('_swf=test.swf','_width=100','_height=100')
具体的に何が起こるのかといいますと、objectやembedタグで書かれたFlashなどの
ActivXコンテンツは、一度、ユーザーがクリックするなどの動作をするまでは動かなくなる、
ということです。
下記、リンクの「ActiveX コントロールのアクティブ化」によれば、次のような動作になります。
非アクティブなコントロールをアクティブ化するには、コントロールをクリックするか、
Tab キーを使用してコントロールにフォーカスを移し、Space キーまたは Enter キーを押します。
外部スクリプトファイルから読み込まれた非アクティブなコントロールは、
ユーザー操作にすぐに応答するため、アクティブ化する必要はありません。
上記、サイトの説明にある、外部.jsファイルからの読み込みを使った
回避策のサンプルを簡単に再現すると、たとえば、
次のようなものになります(他にcreateElementによる方法などいろいろありますが、、、)。
document.writeのケース
http://game.gr.jp/js/books/dhtml2/part2/b/b32/b32-5-1.htm
outerHTMLのケース
http://game.gr.jp/js/books/dhtml2/part2/b/b32/b32-5-2.htm
そして、逆に、直接embedタグをHTML内に書いた、つまり駄目なケースです。
更新プログラムを適用したIEで、マウスを乗せてしばらくすると、
下記のようなチップがあらわれ、クリックすると使えるようになります。
つまり、クリックするまでは使えないのです。
http://game.gr.jp/js/books/dhtml2/part2/b/b32/b32-5-0.htm
▼ALL ABOUT JAPANより抜粋
http://allabout.co.jp/internet/javascript/closeup/CU20060415A/index.htm