iphone:我怎么知道UIWebView已满载?

时间:2011-05-21 13:24:37

标签: iphone uiwebview

是的,我知道UIWebView有didFinishedLoad& didStartLoad代表。

然而,didFinishedLoad并不意味着完全完成。可以在UIWebView完成加载的项目之一时调用它。即,在加载单个页面时,UIWebView可能会多次调用此委托。

所以无论如何可以告诉我如何检查UIWebView是否完全加载?

由于

Ĵ

3 个答案:

答案 0 :(得分:11)

我对DOM的经验不佳,但经过一番搜索,我发现document.readyState是不错的选择。

来自w3schools:

定义和用法 readyState属性返回当前文档的(加载)状态。

此属性返回以下四个值之一:

未初始化 - 尚未开始加载

loading - 正在加载

interactive - 已加载足够,用户可以与之交互

完成 - 满载

所以我用它来知道UIWebView何时加载了文档:

- (void)readyState:(NSString *)str
{ NSLog(@"str:%@",str);

if ([str isEqualToString:@"complete"]||[str isEqualToString:@"interactive"]) {
    NSLog(@"IT HAS BEEN DONE");
    [pageLoadingActivityIndicator stopAnimating];
}

}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
 //other code...
 [self readyState:[browserWebView stringByEvaluatingJavaScriptFromString:@"document.readyState"]];
}

答案 1 :(得分:6)

http://www.codingventures.com/2008/12/using-uiwebview-to-render-svg-files/ 在Javascript上与Objective-C代码进行通信

也许使用文档位置哈希。

并添加到webview html正文:

<body onload="document.location.hash='myapp:myobject:myfunction';">

我知道它有点hacky但有效。它可以在基于ajax的内容中使用,因为当你想调用你的ready方法时它取决于你。或者它可以用作完整的通信方案。

答案 2 :(得分:0)

您可以执行的操作是,在状态栏中显示的视图上显示网络指示符。当您的页面被加载时,指示器将继续旋转,直到除非页面被完全加载。当页面完全加载时,指示器将停止旋转并且将不可见 请看一下这个例子:Network indicator