Я пытаюсь реализовать метод потоковой кометы XHR в jQuery, но у меня возникают проблемы с обнаружением события onreadystatechange
. Я использую Firefox 4.0.1.
Я использую префильтры (доступно с jQuery 1.5) для изменения собственного объекта XHR, в частности, для добавления обработчика события к событию onreadystatechange
. У меня есть грубая реализация этого в http://jsfiddle.net/Rdx6f/.. Этот код добавляет к документу атрибуты readyState
и responseText
объекта XHR при срабатывании события onreadystatechange
. Как ни странно, однако, это, кажется, обнаруживает событие onreadystatechange
, только когда readyState
равно 1.
Другими словами, jQuery, похоже, обнаруживает событие onreadystatechange
, когда объект XMLHttpRequest находится в состоянии «открыто» (readyState 1), но не когда объект XHR находится в состоянии «заголовки получены» (readyState 2), «загрузка» (readyState 3) или «готово» (readyState 4).
Как ни странно, если я alert()
в обработчике событий, то я делаю вижу обработку onreadystatechange
, когда readyState равен 1, 2, 3 и 4. См. http://jsfiddle.net/Rdx6f/1/. Тот же код http://jsfiddle.net/Rdx6f/, просто alert()
вместо добавления к документу.
Я также могу обнаружить onreadystatechange
события, когда readyState
равен 1, 2, 3 или 4 в собственном JavaScript - см. http://jsfiddle.net/d7vaH/. (Этот код почти дословно взят из реализации Диланом Шиманом потоковой передачи XHR на страница 115 книги "Еще быстрее сайты".)
Я просто что-то здесь не так делаю, например, неправильно использовал префильтры Ajax в jQuery или сделал ошибку JavaScript? Возможно, это ошибка в jQuery?