获取UIWebView的当前URL

时间:2010-03-22 10:32:33

标签: ios iphone url request uiwebview

我已尝试使用UIWebView获取webview.request.URL的当前网址。 不幸的是NSURL是空的。这里有什么不对吗?我正在使用Xcode 3.2.2 beta 5。

上述代码应在UIWebView委托didStartLoad中执行。

14 个答案:

答案 0 :(得分:315)

通过JS的window.location对我来说不能可靠地工作,但是这样做了:

currentURL = currentWebView.request.URL.absoluteString;

信用: http://mohrt.blogspot.com/2008/10/getting-url-from-uiwebview.html

答案 1 :(得分:55)

这是我每次导航到webview中不同链接时用来抓取网址的代码:

- (void)webViewDidFinishLoad:(UIWebView *)aWebView
{
  self.url = aWebView.request.mainDocumentURL;
}

答案 2 :(得分:45)

Matt's version更清洁。我建议大家使用that一个而不是

你可以试试这个:

NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location"];

答案 3 :(得分:36)

我也发现上面批准的答案不可靠。 但稍作修改,似乎每次都有效:

NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location.href"];

注意添加" .href"到Javascript,因为它隐藏在代码行的末尾。

答案 4 :(得分:18)

这是不正确的,并且会返回一个零:

NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location"];

但是,下面的代码可以获取网址,但网址可能不是当前网址:

NSString *url = _webView.request.URL.absoluteString;

正确的是:

NSString *currentURL = [_webView stringByEvaluatingJavaScriptFromString:@"window.location.href"];

答案 5 :(得分:8)

- (void)webViewDidFinishLoad:(UIWebView *)webView{
     NSURL *currentURL = [[webView request] URL];
     NSLog(@"%@",[currentURL description]);

}

答案 6 :(得分:4)

尝试在iPhone上使用谷歌搜索结果:

 NSString* currentURL = webView.request.URL.absoluteString;
 NSString* mainDocumentURL = webView.request.mainDocumentURL.absoluteString;

两者都返回相同的字符串!

答案 7 :(得分:3)

这里是我使用的代码:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[[[webView request] URL] absoluteString]]];

答案 8 :(得分:2)

我使用shouldStartLoadWithRequest事件(UIWebViewDelegate)来捕获URL更新。 request.mainDocumentURL.absoluteString会为您提供主网页的网址(通常是您想要的),而request.URL.absoluteString将包含CSS和JavaScript。

答案 9 :(得分:2)

实现委托方法,

- (BOOL)webView:(UIWebView *)webview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString  *URL = request.URL.absoluteString;    NSLog(@"%@",URL);
}

网址是您确切需要的。

答案 10 :(得分:2)

这总是有效的。

NSString* url= [webView stringByEvaluatingJavaScriptFromString:@"window.location.href"];

答案 11 :(得分:2)

由于不推荐使用UIWebView,因此WKWebview获取当前网址非常简单。

webView.url

答案 12 :(得分:1)

IN Swift 试试这个,

func webViewDidFinishLoad(webView: UIWebView){
    println(WebView.request?.mainDocumentURL)
}

答案 13 :(得分:1)

获取WKWebView和UIWebview的当前URL

这是代码。

if (self.wkWebView) {
   NSString  *URL = self.wkWebView.title;
}else if(self.uiWebView) {
   NSString *URL = self.uiWebView.request.title;
}