2009-11-02 100 views

回答

74

是的,那是可能的。使用UIWebViewDelegate協議,並在委託執行下面的方法:

webView.request.URL 
+0

謝謝:)它的工作:) – ishhhh 2013-07-02 12:20:52

+0

抱歉喚醒一個死的話題,但沒有(UIWebview *)的webView,是webView你的webview名稱的出口名稱? – 2014-02-09 19:12:15

+1

@CameronTarbell這是一個委託方法,它將通過Web視圖傳遞,完成加載'webView'變量,與您的出口名稱無關。 – Pascal 2014-02-10 20:18:13

1

非常簡單的方法:

- (void)webViewDidFinishLoad:(UIWebView *)webView 

如果你想要的網址,你可以使用屬性request獲得的最後一個請求

步驟1:在代理文件中設置代理UIWebViewDelegate

第2步:下面webViewDidFinishLoad方法添加得到的webview

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSLog(@"Current URL = %@",webView.request.URL); 

    //-- Add further custom actions if needed 
} 
2

沒有找到解決方案的工作對我來說當前的URL。

然後我發現這個例子至少比我在Google/StackOverflow上找到的任何其他解決方案都更好。

uiwebview-load-completion-tracker

1

帕斯卡的回答爲 「獲取URL」 的部分是好的。

但是!

從Apple的UIWebViewDelegate文檔: 「webViewDidFinishLoad:在Web視圖完成加載幀後發送。」

Frame!= Page。

當頁面「完成加載」時調用webViewDidFinishLoad。在此之前它也可以被調用很多次。來自Amazon.com的頁面加載可以生成對webViewDidFinishLoad的十幾個調用。

如果您控制頁面源,那麼您可以對其進行負載測試,並且對於該情況它將起作用。如果您只關心在頁面加載完成後調用,那麼webViewDidFinishLoad就足夠了。

對於任意頁面,使用任意JavaScript,永久加載廣告橫幅或自動滾動橫幅,或實現視頻遊戲,頁面被「完成加載」的想法是錯誤的。