我試圖在jQuery中實現XHR流式彗星技術,但在檢測onreadystatechange
事件時遇到了一些麻煩。我使用的是Firefox 4.0.1。我可以使用jQuery前置過濾器來檢測readyState == 3的onreadystatechange事件嗎?
我使用prefilters(自jQuery 1.5開始提供)修改本機XHR對象,特別是爲onreadystatechange
事件添加事件處理程序。我在http://jsfiddle.net/Rdx6f/有一個粗略的實現。當觸發onreadystatechange
事件時,該代碼附加到文檔XHR對象的readyState
和responseText
屬性。奇怪的是,然而,似乎只檢測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
是原生JavaScript中的1,2,3或4時 - 請參閱http://jsfiddle.net/d7vaH/。 (這些代碼幾乎是從Dylan Schiemann在「更快速的網站」一書的第115頁實現的XHR流中逐字記錄的。)
我在這裏只是做了一些錯誤,比如使用jQuery的Ajax預過濾器錯誤或者犯了一個JavaScript錯誤?這可能是jQuery中的一個錯誤?
謝謝,這是我正在尋找的答案for。 – jqp 2012-03-27 13:20:52
jfiddle完美地工作,幹得好! – 2015-09-15 21:21:22