Javascript 用于IE7+;8. (功能(发送){ XMLHttpRequest.prototype.send=函数(){ this.addEventListener('readystatechange',function(){ log(“readyState已更改”); },假); send.apply(这个,参数); }; })(XMLHttpRequest.prototype.send);

Javascript 用于IE7+;8. (功能(发送){ XMLHttpRequest.prototype.send=函数(){ this.addEventListener('readystatechange',function(){ log(“readyState已更改”); },假); send.apply(这个,参数); }; })(XMLHttpRequest.prototype.send);,javascript,jquery,ajax,internet-explorer-8,internet-explorer-7,Javascript,Jquery,Ajax,Internet Explorer 8,Internet Explorer 7,这是可行的,但似乎影响了其他框架(比如jQuery)。当我使用上面的代码时,我的jQueryAjax调用没有完成(IE7+IE8) 是否有任何方法可以为事件提供一个新的别名,这样它就不会引起任何冲突(我只是假设这就是问题所在) 我不能使用this.onreadystatechange,因为jQuery正在覆盖它(请参阅Fiddle) 当我绑定事件侦听器时,代码似乎会无声地失败,因此我无法使用控制台进行调试 我之所以需要它,是因为我需要一个用于另一个框架(GWT)的全局ajax处理程序。我现在

这是可行的,但似乎影响了其他框架(比如jQuery)。当我使用上面的代码时,我的jQueryAjax调用没有完成(IE7+IE8)

是否有任何方法可以为事件提供一个新的别名,这样它就不会引起任何冲突(我只是假设这就是问题所在)

我不能使用
this.onreadystatechange
,因为jQuery正在覆盖它(请参阅Fiddle)

当我绑定事件侦听器时,代码似乎会无声地失败,因此我无法使用控制台进行调试

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


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

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

请参阅链接


我是瞎子,很抱歉我试图找到问题的答案,我不知道为什么?。。。您替换了XMLHttpRequest.send,并且您是ReadyStateChange上最后一个更改的人,在您之后没有人可以更改它。。!!但正如你所解释的,这不起作用。。我改变了onload,它是真的&有效的。。我检查jquery源代码,jquery不会在onreadystatechange上覆盖,而只覆盖onload和onerrorXHR@MehdiYeganehjQuery将其设置为
$.noop
,这是一个空函数。是的,我找到了行并发现了问题,问题是当您通过jquery发送请求时,它会检查超时并将onreadystatechange设置为noop(jquery.basis.js,第5240行):setTimeout(function(){//检查请求是否仍在发生,如果(xhr&!requestDone){onreadystatechange(“timeout”);},s.timeout);&如果将timeout设置为0,则可以在jquery中解决问题:D@MehdiYeganeh呵呵,谢谢,但正如我前面提到的,我只是以jQuery为例;我发现console.log()语句导致IE出现问题。谢谢,但jQuery现在应该在内部处理这个问题。而且,
XMLHttpRequest
一直支持到IE7;我不是在寻找jQuery解决方案。我正在使用GWT。我只是为了演示而使用jQuery。jQuery不会在内部处理它。他们没有支持IE8的计划,请参阅此错误报告-->如果您也在使用GWT,则应检查GWT是否支持XDomainRequest。我的直觉告诉我,这与IE8没有针对ajax传输的XMLHttpRequest有关。在我看来,缺少XDomainRequest支持是无关紧要的,因为jQuery使用的是XMLHttpRequests,它们也在IE7+8中工作。我上面的代码失败的原因是,只有IE9支持
addEventlistener
,而IE7+8使用
attachEvent