[英]iphone: How do I know the UIWebView is fully loaded?
是的,我知道UIWebView有didFinishedLoad和didStartLoad委托。
但是,didFinishedLoad並不意味着完全完成。 可以在UIWebView完成加載的項目之一時調用它。 即,UIWebView可以在加載單個頁面時多次調用此委托。
所以無論如何能告訴我如何檢查是否UIWebView的滿載 ?
謝謝
Ĵ
我對DOM的經驗不佳,但經過一番搜索,我發現document.readyState是很好的選擇。
來自w3schools:
定義和用法readyState屬性返回當前文檔的(加載)狀態。
此屬性返回以下四個值之一:
未初始化 - 尚未開始加載
loading - 正在加載
交互式 - 已加載足夠,用戶可以與之交互
完成 - 滿載
所以我用它來知道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"]];
}
http://www.codingventures.com/2008/12/using-uiwebview-to-render-svg-files/ on Javascript與Objective-C代碼進行通信
也許使用文檔位置哈希。
並在webview html體中添加:
<body onload="document.location.hash='myapp:myobject:myfunction';">
我知道它有點hacky但有效。 它可以在基於ajax的內容中使用,因為當你想調用你的ready方法時它取決於你。 或者它可以用作完整的通信方案。
您可以做的是,在狀態欄中顯示的視圖上顯示網絡指示器 。 當您的頁面被加載時,指示器將繼續旋轉,直到除非頁面被完全加載。 當頁面完全加載時,指示器將停止旋轉並且將不可見。
看看這個例子: 網絡指標
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.