获取 UIWebView 的当前 URL

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

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

100084 次浏览

Matt 的版本 更干净,我建议大家使用 那个 one 而不是这个

你可以试试这个:

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

下面是我每次导航到 webview 中的不同链接时用来获取 URL 的代码:

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

here the code i use :

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

我也发现,上述被认可的答案是不可靠的。 但是稍微修改一下,似乎每次都能奏效:

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

Note the addition of ".href" to the Javascript as this is hidden at the end of the line of code.

Tried this for google search results on iPhone:

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

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

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

实现委托方法,

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

URL is the what you exactly needed.

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


}

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

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

然而,下面的代码可以得到一个 URL,但 URL 可能不是当前的 URL:

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

The correct one is:

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

这招总是管用。

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

斯威夫特试试这个,

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

获取 WKWebView 和 UIWebview 的当前 URL

Here is the code.

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

由于 UIWebView 不被推荐,因此 WKWebview获取当前的 URL 非常简单。

webView.url