我使用RFT(Rational Functional Tester)检查.readyState
的属性BrowserTestObject
。
有时在我的测试脚本的下一步之前,我需要确保页面已“准备就绪”并且所有对象都已加载。
.readyState == 4
是否意味着浏览器中的所有对象都已加载并准备就绪?在后台任何 ajax调用仍然可以“正常工作”,还是必须在浏览器返回.readyState=4
之前完成? Flex应用程序怎么样?
该行为是浏览器独立还是不真实?我是IE 8(和Firefox 3.6.x)之后的
答案 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事件并使其更新全局变量。