获取UIWebView的当前url

我已经尝试使用: webview.request.URL获取我的UIWebView的当前url。 不幸的是, NSURL是空的。 这里有什么问题吗? 我正在使用Xcode 3.2.2 beta 5。

上面的代码应该在UIWebView委托didStartLoad执行。

马特的版本更清洁。 我build议大家使用这个,而不是这个

你可以试试这个:

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

通过JS的window.location不能为我工作可靠,但是这样做:

 currentURL = currentWebView.request.URL.absoluteString; 

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

这里是我用来抓取url的代码,每次你浏览webview中的不同链接:

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

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

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

注意在Javascript中添加了“.href”,因为这隐藏在代码行的末尾。

这是不正确的,将返回零:

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

但是,下面的代码可以获得一个URL,但是该URL可能不是当前的URL:

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

正确的是:

 NSString *currentURL = [_webView stringByEvaluatingJavaScriptFromString:@"window.location.href"]; 
 - (void)webViewDidFinishLoad:(UIWebView *)webView{ NSURL *currentURL = [[webView request] URL]; NSLog(@"%@",[currentURL description]); } 

试试这个谷歌search结果在iPhone上:

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

两者都返回相同的string!

这里我使用的代码:

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

我使用shouldStartLoadWithRequest事件(UIWebViewDelegate)来捕获URL更新。 request.mainDocumentURL.absoluteString将获得主网页的URL(通常是你想要的),而request.URL.absoluteString将包括CSS和JavaScript包括。

这总是有效的。 。

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

实现委托方法,

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

url是你确切需要的。

由于UIWebView已被弃用,因此对于WKWebview来说 ,获取当前的url非常简单。

 webView.url 

Swift中试试这个,

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

获取WKWebView和UIWebview的当前URL

这是代码。

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