Humanity

Edit the world by your favorite way

IE9とIE10のJavaScriptでの違い

基本あまりなくて、色んなサイトで「IE10はIE9の機能追加版」みたいに言われてたけど、
機能追加だけじゃなく、仕様変更の部分もちらほらあるみたいだった。
今の所見つけたのは以下の2点。

  • this.documentがundefinedになる
  • window.open()の挙動がちょっと違う(未検証)

this.documentがundefinedになる

ちなみにthis.documentとwindow.documentの違いは、
window.open()で開いたウインドウに対する
イベントハンドラー内で参照した場合に違いが出る。

javascriptのDOMスクリプティングにて、「this」を使うケースとして、イベントリスナー内の処理があります。
下記の例で、thisを省いてしまうとobj1とobj2の内容が同じになってしまいます。

//ウインドウ1の処理
var obj1 = document.getElementsByTagName('input');

var winsub = window.open(openURL, "", "");

//ロード後イベントリスナーに処理を追加
winsub.addEventListener('load', function () {
    //ウインドウ2の処理
    var obj2 = this.document.getElementsByTagName('input');

    //end of event function winsub load
},true);
DOMスクリプティング this.document とdocumentの違い - とろテク

window.open()の挙動がちょっと違う(未検証)

第2,3引数を指定した場合に違いが出る?
今回は自分のケースと違ってたので詳しくは見てない。

IE 10: Window.open() Javascript method behaves differently in IE 10 browser
javascript - Open link in new tab does not work in IE10 - Stack Overflow

雑感

IE10はセキュリティが強化されたらしいので、何かしら対策されたんだろうか。
経緯とか(もしくは単なるバグだとか)知ってる方いたら教えてください。
って言っても検索しても全然出てこないので、Microsoftの中の人*1とかじゃないと分からない気がする…

*1:それもIEの開発に携わってる人