2012-02-23 51 views
3

我使用RFT(Rational Functional Tester)檢查BrowserTestObject的屬性.readyStatereadyState是如何工作的?

有時候在測試腳本的下一步之前,我需要確保頁面已經準備就緒,並且所有的對象都被加載了。

.readyState == 4是否意味着瀏覽器內的所有對象都已加載並準備就緒?在任何阿賈克斯呼叫在後臺仍然「工作」或它必須完成之前瀏覽器返回.readyState=4?柔性應用程序怎麼樣?

行爲瀏覽器是獨立的還是不是真的?我在IE 8之後(和firefox 3.6.x)

回答

3

如果瀏覽器實現正確,快速回答爲YES。

在這裏看到:http://www.whatwg.org/specs/web-apps/current-work/multipage/dom.html#current-document-readiness

+0

在IE 8和firefox 3.6.x中正確實現了嗎? – Radek 2012-02-29 00:19:26

+2

@Radek,根據http://msdn.microsoft.com/en-us/library/ms535874(v=vs.85).aspx,IE8有一個錯誤的實現。 FF 3.6支持它,因爲該錯誤已修復https://bugzilla.mozilla.org/show_bug.cgi?id=347174。 – 2012-02-29 00:27:20

+0

你的意思是哪個錯誤? – Radek 2012-02-29 00:32:19

1

我會說不。如果我理解here的討論,readyState因此只能用於測試javascript,沒有別的。要等待文檔本身加載,您需要連接到document.readyState並等待它變爲"complete"。在這種情況下,一旦HTML解析完成,document.readyState將是"complete"一勞永逸,並且不會受到任何XMLHttpRequest的影響。 Flash插件可以或不可以啓動;大多數肯定會有很多的JavaScript運行;例如$(function() {})在jquery中的構造常常意味着JavaScript代碼只有在瀏覽器達到「完成」狀態後才能開始執行。

要測試是否有任何異步請求正在進行,我建議以某種方式掛接所有XMLHttpRequests的readyState事件並使其更新全局變量。