2010-11-21 58 views
0

我在iOS上的UIWebView中做了一些YouTube相關的東西。我使用YouTube的移動版本,他們以絕對奇怪的方式加載內容(他們通過一堆AJAX調用實際加載頁面,而只是首先加載模板)。有沒有辦法使用JavaScript來檢查是否有任何AJAX調用當前正在等待響應?

別的東西奇怪:我在登錄頁面的整個機身採用這樣的:

NSLog([webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.innerHTML"]);

什麼奇怪的是,記錄不會發生,直到所有的AJAX結束,頁面加載。但我一直認爲JavaScript在繼續執行下一行代碼之前並不等待AJAX​​完成 - 這與此相矛盾;它實際上是在等待AJAX​​完成,然後返回頁面的真實完整的HTML。

任何幫助?我很困惑。

回答

0

如果我們假設您的AJAX是異步的,頁面加載順序可能會影響您所看到的內容。

  1. 首先執行腳本標籤。身體不可用。
  2. 放置在腳本之間的腳本是在頁面加載過程中遇到它們時執行的,腳本處於可用狀態時爲止。
  3. 當所有資源都被加載時,window.onload事件被執行。

因此,取決於您的AJAX調用的位置以及您的日誌記錄調用的位置,這可能會影響您看到的事情的順序。

然後根據NSLog()的更好的實現細節,您可能看不到來自日誌語句的輸出即時調用它。很多時候有緩衝區會被刷新 - 也許只有當UI線程不忙時纔會做其他任何事情。

相關問題