iphone - type - webview swift 4 example
Obtenga la URL actual de UIWebView (14)
La versión de Matt es mucho más limpia. Recomiendo a todos que usen ese en lugar de esto
Puedes intentar esto:
NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location"];
Ya intenté obtener la URL actual de mi UIWebView
con: webview.request.URL
. Desafortunadamente, el NSURL
estaba vacío. ¿Hay algo mal aquí? Estoy trabajando con Xcode 3.2.2 beta 5.
El código anterior debe ejecutarse en el delegado de didStartLoad
.
Como UIWebView está en desuso, para WKWebview obtener la url actual es muy simple.
webView.url
EN Swift prueba esto,
func webViewDidFinishLoad(webView: UIWebView){
println(WebView.request?.mainDocumentURL)
}
Esto no es correcto, y devolverá un cero:
NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location"];
Sin embargo, el código siguiente puede obtener una URL, pero la url puede no ser la URL actual:
NSString *url = _webView.request.URL.absoluteString;
El correcto es:
NSString *currentURL = [_webView stringByEvaluatingJavaScriptFromString:@"window.location.href"];
Esto siempre funciona .
NSString* url= [webView stringByEvaluatingJavaScriptFromString:@"window.location.href"];
Intenté esto para los resultados de búsqueda de Google en iPhone:
NSString* currentURL = webView.request.URL.absoluteString;
NSString* mainDocumentURL = webView.request.mainDocumentURL.absoluteString;
¡Ambos devuelven la misma cadena!
Para obtener la URL actual de WKWebView y UIWebview
Aquí está el código.
if (self.wkWebView) {
NSString *URL = self.wkWebView.title;
}else if(self.uiWebView) {
NSString *URL = self.uiWebView.request.title;
}
También descubrí que la respuesta aprobada anteriormente no era confiable. Pero con una ligera modificación, parece funcionar siempre:
NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location.href"];
Tenga en cuenta la adición de ".href" al Javascript, ya que está oculto al final de la línea de código.
Utilizo el evento shouldStartLoadWithRequest
(UIWebViewDelegate) para capturar las actualizaciones de URL. request.mainDocumentURL.absoluteString
le proporcionará la URL de la página web principal (que normalmente es lo que desea), mientras que request.URL.absoluteString
incluirá CSS y JavaScript.
aquí el código que uso:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[[[webView request] URL] absoluteString]]];
aquí está el código que uso para tomar la URL cada vez que navegas a un enlace diferente dentro de la vista web:
- (void)webViewDidFinishLoad:(UIWebView *)aWebView
{
self.url = aWebView.request.mainDocumentURL;
}
implementar el método de delegado,
- (BOOL)webView:(UIWebView *)webview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *URL = request.URL.absoluteString; NSLog(@"%@",URL);
}
La URL es exactamente lo que necesitabas.
window.location a través de JS no funcionó de manera confiable para mí, pero esto hizo:
currentURL = currentWebView.request.URL.absoluteString;
Crédito: http://mohrt.blogspot.com/2008/10/getting-url-from-uiwebview.html
- (void)webViewDidFinishLoad:(UIWebView *)webView{
NSURL *currentURL = [[webView request] URL];
NSLog(@"%@",[currentURL description]);
}