XHR.readyState == 4 && XHR.status == 0 из расширения Chrome - PullRequest
1 голос
/ 22 ноября 2011

Мне трудно охотиться на жука.Рассмотрим этот код (бизнес-части удалены для защиты невинных):

xhr.onreadystatechange = function() {
        if (this.readyState != 4) {
            debug("state was not 4, it was " + this.readyState);
            return;
        }
        debug("state was 4, status is "+this.status);
        if (this.status == 200 && this.responseText) {
            //(blablabla)
            handleSuccess();
            return;
        }
        debug("no response text..., status is "+ this.status);
        handleError();
    };

В консоли я получаю такие вещи:

[DEBUG] state was not 4, it was 1
[DEBUG] state was not 4, it was 2
[DEBUG] state was not 4, it was 3
[DEBUG] state was not 4, it was 3
[DEBUG] state was not 4, it was 3
[DEBUG] state was not 4, it was 3
[DEBUG] state was not 4, it was 3
[DEBUG] state was 4, status is 200
[DEBUG] no response text..., status is 200
[DEBUG] Handling error

[DEBUG] state was not 4, it was 1
[DEBUG] state was 4, status is 0
[DEBUG] no response text..., status is 0

[DEBUG] state was not 4, it was 1
[DEBUG] state was 4, status is 0
[DEBUG] no response text..., status is 0

[DEBUG] state was not 4, it was 1
[DEBUG] state was 4, status is 0
[DEBUG] no response text..., status is 0

Почему у меня такие результаты?

Это очень неожиданно и происходит совершенно случайно.Некоторые пользователи видят это, некоторые нет.Это часто встречается при установке расширений, но работает нормально при перезагрузке браузера или вручную.

Одна вещь уменьшает частоту: этот код вызывается с помощью window.timeout.Если я звоню через прямой вызов (используя другую функцию добавочного номера), он работает большую часть времени (не каждый раз).

Спасибо за ваше время!

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