获取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; }