无法覆盖XMLHttpRequest上的getResponseHeader方法

时间:2010-08-27 06:51:50

标签: javascript internet-explorer-7 xmlhttprequest

我试图覆盖XMLHttpRequest对象上的getResponseBody方法。代码看起来如此:

xhr.onreadyStateChange = function(){
    if (xhr.readyState !== 4) {
        return;
    }
    if (xhr.status === 200) {
        // callback to handle the result
    } else {
        var _orig = xhr.getResponseHeader;
        xhr.getResponseHeader = function(name){
            return decodeHeader(_orig.apply(xhr,[name]));
        };
        // callback to handle the failure
    }
}

调用_orig.apply时会抛出错误“对象不支持此属性或方法”。

有什么想法吗?感谢。

PS:我每次都创建一个新的XHR对象,不要重用旧的XHR对象。

1 个答案:

答案 0 :(得分:3)

XMLHttpRequesthost object(即环境提供的对象,用于表示环境的某些内容而不是语言的一部分),主机对象基本上可以做任何他们喜欢的事情。它们不受与内置对象相同的规则的约束。 IE尤其值得注意的是利用这种自由,许多宿主对象(包括XMLHttpRequest)的行为并不像人们希望的那样。

出于这个原因,最好不要尝试添加或更改任何主机对象的任何属性。而是编写自己的XMLHttpRequest包装器。