IE8での変化点一覧 + 備忘録(その2)

このエントリは、IE8での変化点一覧 + 備忘録 - latest logの続きです。

  • IE8モードで、CSS expression が無視される。
    • バグ回避や、max-width などを実装するため必要不可欠だった expression 構文は廃止される。
    • ただし、IE7モードとQuirksモードでは下位互換性のため使用可能。
<style>
.title { color: expression((new Date()).getHours() % 2 ? "#B8D4FF":"#F08A00"); }
</styl>
  • CSS2.1に準拠するために、ベンダー独自プリフィクス("-ms-")が追加された
    • 以下のCSSプロパティには先頭に "-ms-" を追加する必要がある(互換性のためつけなくても動作はするが非推奨)。
-ms-accelerator -ms-background-position-x -ms-background-position-y -ms-behavior
-ms-block-progression -ms-filter -ms-ime-mode -ms-layout-grid
-ms-layout-grid-char -ms-layout-grid-line -ms-layout-grid-mode -ms-layout-grid-type
-ms-line-break -ms-line-grid-mode -ms-interpolation-mode -ms-overflow-x
-ms-overflow-y -ms-scrollbar-3dlight-color -ms-scrollbar-arrow-color -ms-scrollbar-base-color
-ms-scrollbar-darkshadow-color -ms-scrollbar-face-color -ms-scrollbar-highlight-color -ms-scrollbar-shadow-color
-ms-scrollbar-track-color -ms-text-align-last -ms-text-autospace -ms-text-justify
-ms-text-kashida-space -ms-text-overflow -ms-text-underline-position -ms-word-break
-ms-word-wrap -ms-writing-mode -ms-zoom
  • CSS2.1に準拠するために、filter: の記述方法が変更になった。
    • 前後にクォートを追加する必要がある。追加しないとIE8では無視される(IE7モードとQuirksモードでも無視される)。
<style>
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";  // IE8での記述方法
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);  // IE5〜IE7 までの記述方法
opacity: 0.5;
</style>
  • ECMAScript 3.1 JSON の仕様をネイティブにサポートした。
    • Date, Number, String, boolean に prototype.toJSON メソッドが追加される。
    • JSONオブジェクトが追加された。
      • JSONオブジェクトは parse() と stringify() の二つの関数を持つ。
      • JSON.parse(source, reviver)
      • JSON.stringify(value, replacer, space)
alert(JSON.parse(JSON.stringify([ 1, 2 ]))); // 1, 2
    • グローバルな関数として、toSafeHTML(), toJSON(), fromJSON() が追加されたという話もある。
  • IEβ2からは、Firebugの console.log メソッドが使える
  • "ブラウザーモード" と "ドキュメントモード" について。
    • ブラウザーモードは、サーバに対するVersionの申告と、互換性に関する振る舞いに影響を与えるもの。ブラウザーモードを変えると、UA文字列も変化する。
    • ドキュメントモードは、DOCTYPEやMETAタグでVersionが指定されたときにどのようにブラウザが振舞うのかを、確認する方法を提供する。コードを変更せずに互換性を検査するモードということ。
  • 文字列の連結を高速化するために、array.push や array.join を多用する必要は無いらしい。
    • SunSpider のテストで最も目を引く「IEJavaScriptは文字列操作が遅すぎる」を改善し、IE8 では IE7 に比べ文字列操作が 約4倍 高速化したらしい。
  • IE8では hasLayout プロパティが削除された。
  • empty-cells の仕様がW3Cに準拠した。
  • <meta http-equiv="X-UA-Compatible" content="IE=xxx" /> のxxx の部分には "EmulateIE7", "5", "7", "8", "edge" が指定可能。