我可以使用jQuery预过滤器来检测readyState == 3的onreadystatechange事件吗?
|
我正在尝试在jQuery中实现XHR流式Comet技术,但在检测
onreadystatechange
事件时遇到了一些麻烦。我正在使用Firefox 4.0.1。
我正在使用预过滤器(从jQuery 1.5开始可用)来修改本机XHR对象,特别是将事件处理程序添加到onreadystatechange
事件中。我在http://jsfiddle.net/Rdx6f/上有一个粗略的实现。当触发“ 0”事件时,该代码将XHR对象的readyState
和responseText
属性附加到文档中。奇怪的是,似乎只有当readyState
为1时才检测到onreadystatechange
事件。
换句话说,当XMLHttpRequest对象处于状态\“ opened \”(readyState 1)时,jQuery似乎正在检测onreadystatechange
事件,但是当XHR对象处于状态\“已接收标头\”(readyState 2), “正在加载”(readyState 3),也不是“已完成”(readyState 4)。
奇怪的是,如果我在事件处理程序中使用alert()
,那么当readyState为1、2、3和4时,我确实会看到onreadystatechange
处理。请参见http://jsfiddle.net/Rdx6f/1/。与http://jsfiddle.net/Rdx6f/相同的代码,只是“ 8”字形而不是附加到文档中。
当本机JavaScript中的readyState
是1、2、3或4时,我还可以检测到onreadystatechange
事件-请参见http://jsfiddle.net/d7vaH/。 (该代码几乎完全取自Dylan Schiemann在“ Even Faster Websites”一书第115页上对XHR流的实现。)
我在这里只是在做错什么,例如使用jQuery \的Ajax预过滤器错误或发生JavaScript错误?这可能是jQuery中的错误吗?
没有找到相关结果
已邀请:
2 个回复
熊融炭臀陛
僻朵庙惩竣