是否可以在 UIWebView (Iphone) 完成加载 URL 时启动事件。
如何找出 UIWebView 的当前 URL?
是的,这是可能的。使用UIWebViewDelegate
协议并在您的委托中实现以下方法:
- (void)webViewDidFinishLoad:(UIWebView *)webView
如果你想要 URL,你可以使用属性获取最后一个请求request
:
webView.request.URL
找到的解决方案都不适合我。
然后我发现这个例子至少比我在 Google/StackOverflow 上找到的任何其他解决方案都要好得多。
非常简单的方法:
第一步:UIWebViewDelegate
在头文件中设置委托。
第 2 步:添加以下webViewDidFinishLoad
方法以获取当前 URLwebview
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSLog(@"Current URL = %@",webView.request.URL);
//-- Add further custom actions if needed
}
Pascal 对“获取 URL”部分的回答很好。
然而!
来自 Apple 的 UIWebViewDelegate 的文档:“webViewDidFinishLoad:在 Web 视图完成加载帧后发送。”
框架!=页面。
当页面“完成加载”时调用 webViewDidFinishLoad。在此之前也可以多次调用。来自 Amazon.com 的页面加载可以生成十几个对 webViewDidFinishLoad 的调用。
如果您控制页面源,那么您可以对其进行负载测试,并且在这种情况下它将起作用。如果您只关心“在页面完成加载后”被调用,那么 webViewDidFinishLoad 就足够了。
对于任意页面,使用任意 JavaScript,永久加载广告横幅,或自动滚动横幅,或实现视频游戏,页面“完成加载”的想法是错误的。