Не удалось переопределить метод getResponseHeader для XMLHttpRequest - PullRequest
2 голосов
/ 27 августа 2010

Я пытался переопределить метод getResponseBody в объекте XMLHttpRequest.Код выглядит так:

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 и не использую старый.

1 Ответ

3 голосов
/ 27 августа 2010

XMLHttpRequest - это хост-объект (т. Е. Объект, предоставленный средой для представления чего-либо об окружающей среде, а не части языка), и хост-объекты могут по существу делать все, что им нравится. Они не связаны теми же правилами, что и встроенные объекты. IE особенно примечателен использованием этой свободы, и многие из его хост-объектов (включая XMLHttpRequest) не ведут себя так, как можно было бы надеяться.

По этой причине лучше не пытаться добавлять или изменять какие-либо свойства любого хост-объекта. Вместо этого напишите свою собственную XMLHttpRequest оболочку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...