web-dev-qa-db-fra.com

Obtenir l'URL actuelle de UIWebView

J'ai déjà essayé d'obtenir l'URL actuelle de mon UIWebView avec: webview.request.URL. Malheureusement, le NSURL était vide. Quelque chose ne va pas ici? Je travaille avec Xcode 3.2.2 beta 5.

Le code ci-dessus doit être exécuté dans le UIWebView delegate didStartLoad.

110
danielreiser

version de Matt est beaucoup plus propre. Je recommande à tout le monde d'utiliser ça un à la place de ceci

Vous pouvez essayer ceci:

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

window.location via JS n'a pas fonctionné de manière fiable pour moi, mais cela a fonctionné:

currentURL = currentWebView.request.URL.absoluteString;

Crédit: http://mohrt.blogspot.com/2008/10/getting-url-from-uiwebview.html

317
Matt Andersen

voici le code que j'utilise pour saisir l'URL chaque fois que vous accédez à un lien différent dans la vue Web:

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

Moi aussi, j'ai trouvé que la réponse approuvée ci-dessus n'était pas fiable. Mais avec une légère modification, il semble fonctionner à chaque fois:

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

Notez l'ajout de ".href" au Javascript car celui-ci est caché à la fin de la ligne de code.

36
SarahR

Ce n'est pas correct, et retournera un zéro:

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

Cependant, le code ci-dessous peut obtenir une URL, mais l'URL peut ne pas être l'URL actuelle:

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

Le bon est:

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

}
8
sivasankar

J'ai essayé ceci pour les résultats de recherche Google sur iPhone:

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

Les deux retournent la même chaîne!

4
Alex Stone

voici le code que j'utilise:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[[[webView request] URL] absoluteString]]];
3
Bobj-C

J'utilise l'événement shouldStartLoadWithRequest (UIWebViewDelegate) pour récupérer les mises à jour d'URL. request.mainDocumentURL.absoluteString vous obtiendrez l’URL de la page Web principale (qui est normalement ce que vous voulez), tandis que request.URL.absoluteString comprendra CSS et JavaScript inclut.

2
Tom Söderlund

implémenter la méthode du délégué,

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

L'URL est ce dont vous avez exactement besoin.

2
Gobi M

UIWebView étant obsolète, car WKWebview , obtenir l'URL actuelle est très simple.

webView.url
2
Kris Roofe

Cela fonctionne toujours. .

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

IN Swift essayez ceci,

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

Pour obtenir l'URL actuelle de WKWebView et UIWebview

Voici le code.

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