Necesito extraer el contenido de la etiqueta del título de una página HTML que se muestra en un UIWebView. ¿Cuál es el medio más sólido para hacerlo?
Sé que puedo hacer:
- (void)webViewDidFinishLoad:(UIWebView *)webView{
NSString *theTitle=[webView stringByEvaluatingJavaScriptFromString:@"document.title"];
}
Sin embargo, eso solo funciona si JavaScript está habilitado.
Alternativamente, podría escanear el texto del código HTML para el título, pero eso se siente un poco engorroso y puede resultar frágil si los autores de la página se vuelven extraños con su código. Si se trata de eso, ¿cuál es el mejor método para procesar el texto html dentro de la API del iPhone?
Siento que he olvidado algo obvio. ¿Existe un método mejor que estas dos opciones?
Actualizar:
A partir de la respuesta a esta pregunta: UIWebView: ¿Puede deshabilitar Javascript? parece que no hay forma de desactivar Javascript en UIWebView. Por lo tanto, el método Javascript anterior siempre funcionará.
fuente
Respuestas:
Para aquellos que simplemente se desplazan hacia abajo para encontrar la respuesta:
Esto siempre funcionará ya que no hay forma de desactivar Javascript en UIWebView.
fuente
WKWebView
tiene la propiedad 'title', solo hazlo así,No creo que
UIWebView
sea adecuado en este momento.fuente
Si Javascript está habilitado, use esto: -
Si Javascript está deshabilitado, use esto: -
Usé +7 y -7 en NSMakeRange para eliminar la longitud de
<title>
ie 7fuente
Editar: acabo de ver que encontraste la respuesta ... sheeeiiitttt
¡Literalmente acabo de aprender esto! Para hacer esto, ni siquiera necesita que se muestre en UIWebView. (Pero mientras lo usa, puede obtener la URL de la página actual)
De todos modos, aquí está el código y alguna explicación (débil):
Entonces tenemos el código HTML, ahora ¿cómo obtenemos el título? Bueno, en cada documento basado en html, el título está indicado por This Is the Title. Así que probablemente lo más fácil es buscar esa cadena htmlCode por, y por, y subcadenarla para obtener las cosas intermedias.
¡Y eso es todo! Básicamente, para explicar todos los chanchullos que ocurren en el docTitle, si hacemos un rango con solo decir NSMakeRange (startRange.location, endRange.location) obtendríamos el título Y el texto de startString (que es) porque la ubicación es por El primer carácter de la cadena. Entonces, para compensar eso, simplemente agregamos la longitud de la cadena
Ahora tenga en cuenta que este código no se prueba ... si hay algún problema, podría ser un error ortográfico o que no agregué / agregué un puntero cuando no debía hacerlo.
Si el título es un poco extraño y no del todo correcto, intente jugar con NSMakeRange; me refiero a sumar / restar diferentes longitudes / ubicaciones de las cadenas --- cualquier cosa que parezca lógica.
Si tiene alguna pregunta o si tiene algún problema, no dude en preguntar. Esta es mi primera respuesta en este sitio web, lo siento mucho si está un poco desorganizada
fuente
Aquí está la versión Swift 4, basada en la respuesta aquí
fuente
No tengo experiencia con vistas web hasta ahora, pero creo que establece su título en el título de la página, por lo tanto, un truco que sugiero es usar una categoría en la vista web y sobrescribir el configurador para self.title para que agregue un mensaje a uno de ustedes objeta o modifica alguna propiedad para obtener el título.
¿Podrías intentar decirme si funciona?
fuente
Si lo necesita con frecuencia en su código, le sugiero que agregue un func en "extension UIWebView" como este
Alternativamente, es mejor usar WKWebView.
Desafortunadamente, no está bien soportado en ARKit. Tuve que renunciar a WKWebView. No pude cargar el sitio web en webView. Si alguien tiene una solución a este problema aquí -> tengo un problema similar, sería de gran ayuda.
fuente