2006年06月09日

MS06-13によるActiveXのワナ

小雨がしとしと降り続く中、いそいそとテストしていたところ、顧客から怒りの電話がきました。
おそるおそる事情を聞くと、ウチの提供してるサービスを使うとIEがフリーズして作業できないとのこと。
以前は問題なく使えていたのに、ある日を境にフリーズするようになったそうで。

そのサービスではHTML中にActiveXで画像を表示させていますが、以前はなんともなかったのに、電話を受けた時点では画像が一瞬消えるとのこと。こちらでも確認したところ、画像が少ないうちは「画像が消えるなー」という印象ですが、画像が増えると再描画に処理時間を喰われるようで、IEがフリーズします。
ウチはそのサービスに手を加えていないし、ある日を境に動かなくなっているので、IEのパッチが怪しい。調査した結果MS06-13が原因と判明。
MS06-13の説明とか、KB912812の説明によると、ActiveXの扱いを「無条件に使用可能」から「手動で有効にした後でのみ使用可能」に変更した影響のようです。KB917425を適用すれば回避できるので、顧客にはこれで回避してもらいました。

回避策があるといっても、全ての顧客にKB917425を当ててもらうのも面倒。そこで、Microsoft様のご指導に従い修正します。

もとのソース

// test.htm
<object classid="clsid:FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF" id="test"
  codebase="http://foo.com/activex/test.cab#version=1,0,0,0">
    <param name="Target" value="...">
    <param name="ImageURL" value="http://foo.com/test.bmp">
</object>

修正後のソース
// test.htm
<div id="DivId">
    <script src="createElementExplicit.js"></script>
</div>

// createElementExplicit.js
var myObject = document.createElement('object');
DivId.appendChild(myObject);
myObject.classid= "clsid:FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF";
myObject.id="test";
myObject.codebase="http://foo.com/activex/test.cab#version=1,0,0,0";
myObject.Target="...";
myObject.ImageURL = "http://foo.com/test.bmp";

これで、画像が消えることなく動作するようになりました。やれやれ。

人気blogランキング



posted by まる at 21:49| Comment(0) | TrackBack(0) | プログラマ Chips | このブログの読者になる | 更新情報をチェックする

今後の更新について

更新しなきゃ…と思いながらも、ネタ不足のため更新できませんでした。申し訳ない。 書いておかなきゃと思ったことはだいたい書いたので、今後は更新ペースを落とします。
以前は週1回の更新を目標としていましたが、今後は月1回程度ネタがあったら更新するくらいになります。

読者(いるのか?)には申し訳ありませんが、今後もご愛顧のほどよろしくお願いします。

人気blogランキング

posted by まる at 21:45| Comment(0) | TrackBack(0) | おしらせ | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。