Internet Explorer 8 原型和 XMLHttpRequest

2024-01-14

这部分是对解决方法的请求,部分是试图表明 Internet Explorer 的原型实现仍然有缺陷。

以下代码在 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 不喜欢装饰。

有谁知道这个问题的解决方法?

Update:

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


问题似乎是 IE 8 识别 XMLHttpRequest,但不识别为函数。 Active X 对象似乎仍然有效。我没有测试 window.XMLHtppRequest 是否存在,而是测试 window.XMLHtppRequest 的类型。似乎工作正常。

我将我的获取请求重新编码如下:

FG.ajax.getxhr = function(){
var xhr;
if (typeof window.XMLHttpRequest === 'function') {
    xhr  = XMLHttpRequest();
}
else {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
return xhr; 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Internet Explorer 8 原型和 XMLHttpRequest 的相关文章