Pregunta Inyectar un javascript local en UIWebView


¿Hay alguna forma de inyectar un archivo JS local o un archivo JS almacenado en mi servidor en cualquier página web cargada por UIWebView?

Digamos que navego a google.com en ese UIWebView, muestra esa página y también ejecuta mi archivo JS (local o en mi servidor web).


11
2017-09-05 20:45


origen


Respuestas:


El siguiente código inyectará javascript localmente

- (void)injectJavascript:(NSString *)resource {
    NSString *jsPath = [[NSBundle mainBundle] pathForResource:resource ofType:@"js"];
    NSString *js = [NSString stringWithContentsOfFile:jsPath encoding:NSUTF8StringEncoding error:NULL];

    [self.webView stringByEvaluatingJavaScriptFromString:js];
}

Simplemente pase el nombre del archivo antes del js, ej.

[self injectJavascript:@"script"];

Para realizar una inyección de JavaScript desde su servidor, puede descargarlo primero y cargarlo en la vista web de una manera similar.


18
2017-09-05 20:52



Me gustaría completar La respuesta de Sherman. Xcode define * .js - archivos como código fuente y lo agrega a "compilar fuentes" en las preferencias del proyecto, por lo que objc devuelve nulo, cuando intenta obtener pathForResource en mainBundle. Para solucionar este problema, debe agregar su archivo JavaScript a "Crear fases"> "Copiar recursos de paquete" en las preferencias del proyecto. Espero que sea útil, se enfrentó a este problema hoy.


1
2017-07-01 08:52