2009-11-02 111 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,永久加载广告横幅或自动滚动横幅,或实现视频游戏,页面被“完成加载”的想法是错误的。