Ottieni l’URL corrente di UIWebView

Ho già provato a ottenere l’URL corrente della mia UIWebView con: webview.request.URL . Sfortunatamente NSURL era vuoto. Qualcosa non va qui? Sto lavorando con Xcode 3.2.2 beta 5.

Il codice sopra deve essere eseguito nel delegato di didStartLoad .

La versione di Matt è molto più pulita. Consiglio a tutti di usarlo al posto di questo

Potresti provare questo:

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

window.location tramite JS non ha funzionato in modo affidabile per me, ma questo ha fatto:

 currentURL = currentWebView.request.URL.absoluteString; 

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

ecco il codice che uso per prendere l’url ogni volta che navighi su un altro link all’interno della webview:

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

Anch’io ho scoperto che la risposta approvata sopra non era affidabile. Ma con una leggera modifica, sembra funzionare ogni volta:

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

Notare l’aggiunta di “.href” al Javascript poiché questo è nascosto alla fine della riga di codice.

Questo non è corretto e restituirà un valore nullo:

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

Tuttavia, il codice seguente può ottenere un URL, ma l’url potrebbe non essere l’URL corrente:

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

Quello corretto è:

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

Ho provato questo per i risultati di ricerca di google su iPhone:

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

Entrambi restituiscono la stessa stringa!

qui il codice che uso:

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

Io uso l’evento shouldStartLoadWithRequest (UIWebViewDelegate) per catturare gli aggiornamenti degli URL. request.mainDocumentURL.absoluteString ti porterà l’URL della pagina web principale (che normalmente è ciò che desideri), mentre request.URL.absoluteString includerà CSS e JavaScript.

Funziona sempre. .

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

implementare il metodo delegato,

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

L’URL è ciò di cui hai esattamente bisogno.

Dato che UIWebView è deprecato, per WKWebview ottenere l’url corrente è molto semplice.

 webView.url 

IN Swift prova questo,

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

Per ottenere l’URL corrente di WKWebView e UIWebview

Ecco il codice.

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