2011-07-29 36 views
6

Estoy buscando una forma de cargar mi UIWebView con un archivo CSS local que debería afectar en loadRequest de UIWebView.Cargar UIWebView con un archivo local CSS

Para la claridad: Tengo un UIWebView que cardoRequest con un URL del sitio web. También tengo un archivo CSS local que debería afectar a este loadRequest url.

Quiero cargar este archivo CSS en UIWebView.

Gracias,

Respuesta

3

Este stackoverflow question parece tener una o dos respuestas que pueden ayudarle.

es necesario cargar el CSS local (usando un método no muy diferente utiliza @Shrey, pero en busca de su archivo CSS), y de alguna manera lo inyecta en la página, y la única manera parece ser el uso de:

[webview stringByEvaluatingJavaScriptFromString:someJavascriptToInjectCSS]; 

y algo de JavaScript inteligente para modificar la página para añadir el CSS en.

Hope esto le ayuda a apuntar en la dirección correcta. He usado este método para inyectar cosas en las páginas, por lo que funciona, pero no sé Javascript lo suficientemente bien como para escribir el código para inyectar su CSS en la página.

+0

Disculpa, desordené el enlace de la respuesta, ahora editado. Hay una respuesta en esa página que parece hacer lo que desea, al incluir el js. – iandotkelly

+0

Gracias, pero ¿es posible aplicar archivos css personalizados en UIWebView que cargue sitios como Google o debería renunciar a esta opción? – jkigel

+0

Sí, puede usar la respuesta en la pregunta SO - la respuesta a la que me refiero es: http://stackoverflow.com/questions/1893715/is-it-possible-to-use-stringbyevaluatingjavascriptfromstring-with-javascript-whic/1895864 # 1895864 Esta respuesta muestra la carga de un CSS de un archivo local y su inyección en la vista web. – iandotkelly

-1

Prueba esto:

[WebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]isDirectory:NO]]];

+1

no piensa que va a hacer lo OP está pidiendo. Para empezar, es un archivo CSS local que desean cargar, no un archivo html, luego quieren inyectar el CSS en una página que no hace referencia a él. – iandotkelly

+0

Luego intenta usar los métodos delegados de webview. – Hisenberg

0

Esta es la versión Swift.

Cargue el archivo css en el método delegado webViewDidFinishLoad y use stringByEvaluatingJavaScriptFromString. Créditos here

func loadWebViewStyles() { 
     guard let cssPath = NSBundle.mainBundle().pathForResource("theme", ofType: "css") else { 
      return 
     } 

     let loadStyles = "var script = document.createElement('link'); script.type = 'text/css'; script.rel = 'stylesheet'; script.href = '\(cssPath)'; document.getElementsByTagName('body')[0].appendChild(script);" 

     webView.stringByEvaluatingJavaScriptFromString(loadStyles) 
    } 
Cuestiones relacionadas