11
(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です。ただし、attachEventie7-8 の XHR オブジェクトには存在しないようです。

4

1 に答える 1

1

IE8 で jquery が失敗するという同様の問題がありました。クロスドメインリクエストを行っていると思います。Jquery は XMLHttpRequest を介して ajax を実行しますが、IE8 は XMLHttpRequest オブジェクトを XDomainRequest に置き換えており、jquery の人々はそれをサポートしていません。そのため、IE8 では、XDomainRequest を jquery で使用するようにコードを変更する必要があります。

リンクを見る

IE8 で jquery ajax を使用する

于 2013-04-09T07:34:39.127 に答える