(function (send) {
XMLHttpRequest.prototype.send = function () {
this.addEventListener('readystatechange', function() {
console.log('readyState changed');
}, false);
send.apply(this, arguments);
};
})(XMLHttpRequest.prototype.send);
これは機能しますが、他のフレームワーク (jQuery など) に影響しているようです。上記のコードを使用すると、jQuery ajax 呼び出しが完了しません (IE7 + IE8)。
イベントに新しいエイリアスを付けて、競合が発生しないようにする方法はありますか (これが問題であると想定しています)。
また、jQuery が上書きしているため、使用できませんthis.onreadystatechange
(Fiddle を参照)。
イベントリスナーをバインドするとすぐに、コードがサイレントに失敗するように見えるため、コンソールを使用してデバッグできません。
ie8 と ie9 モードで比較すると、ie8 ではコンソールが空であることがわかります
これが必要な理由は、別のフレームワーク (GWT) 用のグローバルな ajax ハンドラーが必要だからです。私は今それをテストするためだけにjQueryを使用しています。
編集: ie9 のみがサポートしているようaddEventListener
です。ただし、attachEvent
ie7-8 の XHR オブジェクトには存在しないようです。