Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Internet Explorer 8原型和XMLHttpRequest_Javascript_Html_Internet Explorer_Internet Explorer 8_Xmlhttprequest - Fatal编程技术网

Javascript Internet Explorer 8原型和XMLHttpRequest

Javascript Internet Explorer 8原型和XMLHttpRequest,javascript,html,internet-explorer,internet-explorer-8,xmlhttprequest,Javascript,Html,Internet Explorer,Internet Explorer 8,Xmlhttprequest,这部分是为了解决问题,部分是为了让人们知道InternetExplorer的原型实现仍然存在缺陷 以下代码在Internet Explorer上不起作用 XMLHttpRequest.prototype.old = XMLHttpRequest.prototype.open; var x = new XMLHttpRequest(); x.old("POST", "test", false); 对于IE 8 beta版和所有以前的版本,XMLHttpRequest.prototype属性从一开

这部分是为了解决问题,部分是为了让人们知道InternetExplorer的原型实现仍然存在缺陷

以下代码在Internet Explorer上不起作用

XMLHttpRequest.prototype.old = XMLHttpRequest.prototype.open;
var x = new XMLHttpRequest();
x.old("POST", "test", false);
对于IE 8 beta版和所有以前的版本,XMLHttpRequest.prototype属性从一开始就不存在。在IE8中,它确实存在,但您将得到一个“无效的过程调用或参数”错误。Internet Explorer不喜欢装饰

有人知道这方面的解决方法吗

更新


有人指出,我可以用一个新函数和构造函数覆盖整个XMLHttpRequest,然后创建一个包装器脚本ala XMLHttpRequest.js。prototype方法要短得多,所以我还是更愿意在非IE浏览器中使用它。

问题似乎是IE 8识别XMLHttpRequest,但不是作为一个函数。活动X对象似乎仍在工作。我没有测试window.XMLHtppRequest的存在性,而是测试window.XMLHtppRequest的类型。看起来不错

我将get请求重新编码如下:

FG.ajax.getxhr = function(){
var xhr;
if (typeof window.XMLHttpRequest === 'function') {
    xhr  = XMLHttpRequest();
}
else {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
return xhr; 

您是否已将此报告给Microsoft?还没有。我不确定我是否有耐心找出微软的bug报告渠道。我能提供一个解决方案吗?可以说,使用prototype通过手术覆盖方法要优雅得多(30行对300行)。这就是说,如果我想支持IE,我可能必须按照页面上的建议去做。我不会着急,我想我看到了一份没有评论的报告。