2011-05-21 49 views
7

是的,我知道UIWebView已didFinishedLoad & didStartLoad委託。iphone:我如何知道UIWebView是完全加載的?

但是,didFinishedLoad並不意味着完全完成。當UIWebView完成加載時,它可能會被調用。即,UIWebView可以在加載單個頁面的同時多次調用該代理。

那麼無論如何可以告訴我如何檢查UIWebView是否加載了完全

由於

Ĵ

+0

你有沒有這樣做http://stackoverflow.com/questions/1842370/uiwebview-didfinishloading-fires-multiple-times首先? – phi 2011-05-21 13:31:13

回答

6

http://www.codingventures.com/2008/12/using-uiwebview-to-render-svg-files/ 上的Javascript傳送回與Objective-C代碼

也許使用文檔位置散列。

,並添加web視圖HTML正文:

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

我知道它有點哈克但工程。它可以在基於AJAX的內容中使用,因爲當你想調用你準備好的方法時它取決於你。或者它可以用作一個完整的通信方案。

0

你可以做的是,在狀態欄中可見的視圖上顯示一個網絡指示器。當您的頁面被加載時,指示器將繼續旋轉,直到頁面完全加載。當頁面完全加載時,指示器將停止旋轉並且不可見。
只看看這個例子:Network indicator

+2

是的,@Nitish,我知道這個網絡指標。但我的問題是要通過代碼找出完全的UIWebView,而不是眼睛。謝謝 – 2011-05-22 21:38:39

+0

可以查詢其可見性? – Timo 2013-08-19 15:05:18

11

我對DOM有很差的經驗,但經過一番搜索後,我發現document.readyState是最好的選擇。

從W3Schools的:

定義和用法 readyState屬性返回當前文檔(加載)狀態。

此屬性返回四個值之一:

初始化 - 還沒有開始加載但

裝載 - 是否加載

互動 - 裝入足夠,並且用戶可以用它

互動

完成 - 滿載

所以我用這個知道什麼時候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

This Works!我將使用這個,謝謝!:) – 2013-04-15 14:58:31

+0

if([str isEqualToString:@「complete」] || [str isEqualToString:@「interactive」])是我唯一的工作! – 2013-07-23 22:09:59

+1

我從一個網頁獲得了「IT已完成」27次記錄。所以我不能說這是工作,因爲我期望 – 2014-04-01 08:12:36

相關問題