IE7 + 8的AJAX readystatechange监听器

Joh*_*han 11 javascript ajax jquery internet-explorer-8 internet-explorer-7

(function (send) {

     XMLHttpRequest.prototype.send = function () {

         this.addEventListener('readystatechange', function() {

             console.log('readyState changed');

         }, false);

         send.apply(this, arguments);
     };

})(XMLHttpRequest.prototype.send);
Run Code Online (Sandbox Code Playgroud)

这有效,但它似乎正在影响其他框架(如jQuery).当我使用上面的代码时,我的jQuery ajax调用没有完成(IE7 + IE8).

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

而我无法使用this.onreadystatechange,因为jQuery会覆盖它(参见小提琴).

一旦我绑定事件监听器,代码似乎无声地失败,因此我无法使用控制台进行调试.

小提琴

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

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

编辑:看起来只有ie9支持addEventListener.但是,attachEventie7-8中的XHR对象似乎不存在.

che*_*rit 1

我们也遇到过类似的问题,jquery 在 IE8 上失败。我假设您正在发出跨域请求。Jquery 通过 XMLHttpRequest 进行 ajax,但是 IE8 已用 XDomainRequest 替换了 XMLHttpRequest 对象,而 jquery 人员不支持它。因此,对于 IE8,您必须修改代码才能将 XDomainRequest 与 jquery 一起使用。

查看链接

在 IE8 上使用 jquery ajax