是的,我知道UIWebView有didFinishedLoad& didStartLoad代表。
然而,didFinishedLoad并不意味着完全完成。可以在UIWebView完成加载的项目之一时调用它。即,在加载单个页面时,UIWebView可能会多次调用此委托。
所以无论如何可以告诉我如何检查UIWebView是否完全加载?
由于
Ĵ
答案 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