HOME

【まえおき】

'06年4月12日以降のwindows Updateで、Internet Explorerの仕様変更が行われています。

通常行われる定期的なセキュリティパッチ更新に加え、
今回はFlashやムービーなどを埋め込んだwebページを閲覧する際、
マウスカーソルを当てるとそれらのオブジェクトを囲む枠
「このコントロールをアクティブ化して使用するにはクリックしてください」 というメッセージがあらわれ、
一度クリックしないと次へ進めないという妙な改変がなされています。

どうやら特許ゴロを本業とする企業(とはいっても社員1名とか)に絡まれたマイクロソフト社が苦肉の策でとったものらしいですが、
そんな大人の事情はさておいて、ブラウザのシェア95%以上(当サイト調べ)を占めるIEユーザーにとってはウザいことこのうえなく、
また、webページ製作者にとってもデザインを損なう腹立たしい改悪であることは事実です。

見る側の対策としては、IEの該当パッチ(KB912945)を「プログラムの追加と削除」から削除したり(IEの設定で変更することは不可能)、
NetscapeやFirefoxなど別のwebブラウザに乗り換えるといった方法が挙げられますが、
来訪者にそういった条件付けを要求することはweb製作者側の敗北であり、
「どのブラウザを使ってもほぼ変わらずに表示されること」、「閲覧者のPC環境に依存しない」
という俺のジャスティスが許しません。
ここはIE使いでもきっちり表示させてやろうじゃないか、と決意しましたというのが前回までのあらすじ。

【で、】

さて、マイクロソフト側もさすがにこれが改悪であることは十分承知なようで、webページ製作における問題回避の方法が
目に付かないようにこっそりとアップされていますが(ActiveX コントロールのアクティブ化)、
これが開発者向けということで読みづらい。わかりづらい。つか日本語でおk。
普段ホームページビルダーでサイトを作ってるあたしのようなゆとり教育人間には頭の痛い内容です。
でも逃げるわけにもいかないのでこれをもとに、手っ取り早く楽してできる対処方法を考えることにします。

【概要】

なんだかよくわからないなりに読み進めます。
どうやら今回アウトなのがhtmlページから直接、「動く」FlashやムービーなどといったActiveXコントロールを直接呼び出すこと。
一方、「動かない」絵や"命令書"を読み出すのはセーフなようです。
そこでにActiveXコントロールを動かすよう書き込んだ"命令書"を用意してそれを呼び出すことによって
間接的に動作させればいいよ、というのがMS社の言いたいことなようで。



【解決法】

(1) 元のhtmlに記述されているActiveXコントロールを読み出す部分、たとえばFlashを貼り付けているページであれば
 <EMBED src="hoehoe.swf" loop=true quality=high bgcolor=#ffffffff WIDTH="320" HEIGHT="240"
 NAME="hoehoe" ALIGN="" TYPE="application/x-shockwave-flash"
 pluginspage="http://www.macromedia.com/go/getflashplayer"></EMBED>
 (注:貼り付けてあるFlashを仮にサイズ240*320の「hoehoe.swf」とします)の部分を反転右クリックでコピーします。


(2) テキストドキュメントを新規で作成し、(1)でコピーしたものをペーストします。


(3) さらに、最初と最後に青字で示した文字を付け加えます。
 document.write('<EMBED src="hoehoe.swf" loop=true quality=high bgcolor=#ffffffff WIDTH="320" HEIGHT="240"
 NAME="hoehoe" ALIGN="" TYPE="application/x-shockwave-flash"
 pluginspage="http://www.macromedia.com/go/getflashplayer"></EMBED>');


(4) ドキュメントを保存し、名前を「hoehoe.js」(便宜上、元のFlash名と同一にしたほうが便利)にリネームします。
 これが"命令書"となります。


(5) htmlにおいて(1)でコピーしたスクリプト部分を消し、代わりに"命令書"jsファイルを読み込む記述
 <script src="hoehoe.js"></script>
 に置き換えます。


(6) 変更したhtmlファイルとjsファイルをアップロードします。