关于 "XMLHttpRequest 的 readyState" 几个你可能不知道的细节.
请大家原谅这个俗气的标题吧
如果这些你已经知道了 就算我火星好了
反正我早已经加入"火星常驻JE办事处"了.
==============================
XMLHttpRequest.onreadystatechange 按照定义 是
当 XMLHttpRequest 的 readyState 发生变化时 触发.
[ 注: readyState 在 XMLHttpRequest.open时即改变,
也就是说 onreadystatechange 最好在 open之前设置. ]
在 opera safari chrome IE7 FF3 中是这样.
但是 在 IE6 和 FF2中 却并不总是如此.
==============================
在 opera safari chrome IE7 FF3 中,
只有当 readyState 状态发生变化时 才会触发 onreadystatechange .
这里的"变化" 是指 readyState 有了新值而且这个新值和之前的值不一样.
所以 最后我附上的测试代码 在 opera safari chrome IE7 FF3 中, 每种状态值只会alert一次.
但是 在IE6 和 FF2中 , readyState 只要被重新赋值 ,不管值和之前是否一样,都会触发 onreadystatechange 事件.
xhr.open 之后 readyState==1
xhr.send 之初 readyState==1
....
在上述两个时刻 IE6 和 FF2中 都会触发 onreadystatechange 事件,
而 opera safari chrome IE7 FF3 则只会在 open时触发一次 ,下次触发则已经是在 readyState !== 1 时.
关于此问题 网上也有人提及
http://blog.csdn.net/hulefei29/archive/2008/04/18/2305683.aspx
==============================
我测试用的代码 很简陋 呵呵 见笑了