Вот так намного лучше, что вы процитировали, можно было цитату и более короткую так чтобы в поиск скопировать и быстро в оригинале найти.
Да.. класс который я написал, писал основываясь на знаниях полученных на тот момент. То что состояния меняются не последовательно в разных браузерах - это я уже давно знал. Какие я особенности узнал и как я работаю с аяксом в своем классе:
1 я не использую метод onreadystatechange(), т.к. в той статье сказано что он не корректно реализован в IE и утечка памяти с ним.
вместо него я использую setInterval-опрос состояний readyState.
2. вызываю onProgress обработчик в своем классе если readyState изменился, или если изменилось содержимое responseText, если изменилось responseText я вычисляю насколько изменлось, т.е.возвращаю последнее добавление к тексту: responseText.substr(o.oldLength).
3.Еще я знаю что браузер IE получает новую порцию данных при ответе не менее 2 килобайт, поэтому в промежуточные ответы на сервере дописываю пробелы до 2049 символов.
4.Еще я обрабатываю отсутствие в ответе заголовка Date для IE, т.к. IE имеет свойство не отправлять запрос а ковырнуть в своем кэше ответ на него, и тогда я заново запускаю отправку и по состоянию 304 считываю с кэша.
Кстати с кэшированием на Ajax хочу сегодня обстоятельней разобраться - проверить всё практически, а не доверять словам разных статей. Кстати за статью что вы мне дали - спасибо, рассмотрю её основательней.
|