获取UIWebView的当前URL

dan*_*ser 110 iphone url request uiwebview ios

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

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

Mat*_*sen 317

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

currentURL = currentWebView.request.URL.absoluteString;
Run Code Online (Sandbox Code Playgroud)

图片来源:http: //mohrt.blogspot.com/2008/10/getting-url-from-uiwebview.html

  • 如果您的网站会在其他请求中加载某些广告,您将收到不正确的网址."Mark Sands"写的更清晰的变体 (9认同)
  • 如果网站已完成history.pushState,则此方法似乎不起作用 (3认同)

Mar*_*nds 55

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

- (void)webViewDidFinishLoad:(UIWebView *)aWebView
{
  self.url = aWebView.request.mainDocumentURL;
}
Run Code Online (Sandbox Code Playgroud)


Ren*_*ers 45

马特的版本更干净.我建议每个人都使用那个而不是这个

你可以试试这个:

NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location"];
Run Code Online (Sandbox Code Playgroud)

  • 马特他的版本更干净.所以是的,我建议每个人都使用那个而不是这个. (11认同)
  • 它对我不起作用,但Matt Andersen的代码是. (4认同)
  • 我实际上评估"document.URL"而不是"window.location"(对我来说总是空白).这对于可能不使用传统页面加载的JS重型站点上的页面URL的内部调整很有用. (2认同)

Sar*_*ahR 36

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

NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location.href"];
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢SarahR,即使UIWebView仅部分加载页面,您的方法也能正常工作. (2认同)

D.D*_*.D. 18

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

NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location"];
Run Code Online (Sandbox Code Playgroud)

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

NSString *url = _webView.request.URL.absoluteString;
Run Code Online (Sandbox Code Playgroud)

正确的是:

NSString *currentURL = [_webView stringByEvaluatingJavaScriptFromString:@"window.location.href"];
Run Code Online (Sandbox Code Playgroud)


小智 8

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

}
Run Code Online (Sandbox Code Playgroud)