readyState如何工作?

时间:2012-02-23 23:28:41

标签: ajax cross-browser pageload readystate

我使用RFT(Rational Functional Tester)检查.readyState的属性BrowserTestObject

有时在我的测试脚本的下一步之前,我需要确保页面已“准备就绪”并且所有对象都已加载。

.readyState == 4是否意味着浏览器中的所有对象都已加载并准备就绪?在后台任何 ajax调用仍然可以“正常工作”,还是必须在浏览器返回.readyState=4之前完成? Flex应用程序怎么样?

该行为是浏览器独立还是不真实?我是IE 8(和Firefox 3.6.x)之后的

2 个答案:

答案 0 :(得分:3)

如果浏览器实施正确,快速回答为是。

见这里:http://www.whatwg.org/specs/web-apps/current-work/multipage/dom.html#current-document-readiness

答案 1 :(得分:1)

我会说不。如果我理解讨论here,那么使用的readyState只引用测试javascript,没有别的。要等待文档本身已加载,您需要挂钩document.readyState并等待它成为"complete"。在这种情况下,一旦HTML解析完成,document.readyState将一劳永逸地"complete",并且不受任何XMLHttpRequest的影响。 Flash插件可以启动也可以不启动;肯定会有很多javascript在运行;例如,jquery中的$(function() {})构造通常意味着只有在浏览器达到“完成”状态后,javascript代码才能开始执行。

为了测试是否有任何异步请求,我建议以某种方式挂钩所有XMLHttpRequests的readyState事件并使其更新全局变量。