2010-11-21 61 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线程不忙时才会做其他任何事情。

相关问题