39

是否可以在 UIWebView (Iphone) 完成加载 URL 时启动事件。

如何找出 UIWebView 的当前 URL?

4

4 回答 4

76

是的,这是可能的。使用UIWebViewDelegate协议并在您的委托中实现以下方法:

- (void)webViewDidFinishLoad:(UIWebView *)webView

如果你想要 URL,你可以使用属性获取最后一个请求request

webView.request.URL
于 2009-11-02T17:30:00.500 回答
2

找到的解决方案都不适合我。

然后我发现这个例子至少比我在 Google/StackOverflow 上找到的任何其他解决方案都要好得多。

uiwebview-load-completion-tracker

于 2014-09-02T09:22:54.277 回答
1

非常简单的方法:

第一步:UIWebViewDelegate在头文件中设置委托。

第 2 步:添加以下webViewDidFinishLoad方法以获取当前 URLwebview

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

    //-- Add further custom actions if needed 
}
于 2014-04-17T05:40:36.190 回答
1

Pascal 对“获取 URL”部分的回答很好。

然而!

来自 Apple 的 UIWebViewDelegate 的文档:“webViewDidFinishLoad:在 Web 视图完成加载帧后发送。”

框架!=页面。

当页面“完成加载”时调用 webViewDidFinishLoad。在此之前也可以多次调用。来自 Amazon.com 的页面加载可以生成十几个对 webViewDidFinishLoad 的调用。

如果您控制页面源,那么您可以对其进行负载测试,并且在这种情况下它将起作用。如果您只关心“在页面完成加载后”被调用,那么 webViewDidFinishLoad 就足够了。

对于任意页面,使用任意 JavaScript,永久加载广告横幅,或自动滚动横幅,或实现视频游戏,页面“完成加载”的想法是错误的。

于 2016-07-14T14:37:10.853 回答