古いIEを共存させてみる試み

古い IEuupaa.js を動かすとどうなるんだろう? とちょっと気になったので、
IE7とIE6を共存させる方法:まとめ | コリス で紹介されている「IE7をベースに、IE6をスタンドアローンで起動する方法:その1」を試してみました。

失敗

コンテンツを表示する用途には使えますが、フィルター周りの挙動がおかしいことになりました。
具体的には、MSが配布しているIE6をインストールした状態で動作するコードが、MS製IE7 + IE6(unofficial)では動作しません。
# "alpha" の代わりに "DXImageTransform.Microsoft.Alpha" でも試したがダメ

uu.css.setOpacity = function(elm, opa) {
  opa = parseFloat(opa);
  opa = (opa > 1) ? 1 : (opa < 0.001) ? 0 : opa;
  elm.style.opacity = parseFloat(opa); // uu.css.opacity()で値を取得できるようにしておく
  if (elm.filters.alpha) {
    elm.filters.alpha.opacity = parseFloat(opa) * 100;
    return;
  }
  elm.style.filter += " alpha(opacity=" + (parseFloat(opa) * 100) + ")";
  elm.style.zoom = elm.style.zoom || "1.0"; // force "hasLayout"
},


デバッガで追うと "filters" in elm は true なのですが、elm.filters が undefined になったりするため、I/Fレベルで不整合が発生しているようです。
IE5.5(unofficial) の動きも、なんかちょっと違うかなぁ〜という気がします(エラーでまくりなので詳しく見ていません)。

IEってそういうものだよね」と

  • IE7をアンインストール
  • IE6の状態で再起動

IE7 + IE6(unofficial)で動作しなくなっていた色々なコードが再び動作するようになりました。
一般的なコードの検証には使えそうですが、IEをHackして機能を拡張しているようなコードはダメっぽいです。


Virtual PC 2007 は WinXP Home にインストールできないため、その手も使えず。
今日はここで手詰まりです。