簡體   English   中英

iphone:我怎么知道UIWebView已滿載?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM