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)。

有没有办法给事件一个新的别名,这样它就不会引起任何冲突(我只是假设这是问题所在)?

而且我不能使用this.onreadystatechange,因为 jQuery 正在覆盖它(参见 Fiddle)。

绑定事件侦听器后,代码似乎会静默失败,因此我无法使用控制台进行调试。

小提琴

在 ie8 和 ie9 模式下比较,注意 ie8 中的控制台是空的

我需要这个的原因是我想要一个用于另一个框架(GWT)的全局 ajax 处理程序。我现在使用 jQuery 只是为了测试它。

编辑:看起来只有 ie9 支持addEventListener. 但是,attachEvent在 ie7-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 回答