2010-03-19 14 views
7

tengo el siguiente código que carga y archivo html en una vista webWebView css carga sobre la marcha

- (void)awakeFromNib{ 

    NSString *resourcesPath = [[NSBundle mainBundle] resourcePath]; 
    NSString *htmlPath = [resourcesPath stringByAppendingString:@"/main.html"]; 
    [[self mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:htmlPath]]]; 

} 

¿cómo iba a cargar dinámicamente un archivo CSS (de la manera más eficiente), ya que no se ajusta a tener el enlace del archivo css en el archivo html

Respuesta

12

Debe acceder al DOM usando la API DOM Objective-C e insertar el elemento <link> o <style> correspondiente en el DOM.

DOMDocument* domDocument=[webView mainFrameDocument]; 
DOMElement* styleElement=[domDocument createElement:@"style"]; 
[styleElement setAttribute:@"type" value:@"text/css"]; 
DOMText* cssText=[domDocument createTextNode:@"body{font-weight:bold;}"]; 
[styleElement appendChild:cssText]; 
DOMElement* headElement=(DOMElement*)[[domDocument getElementsByTagName:@"head"] item:0]; 
[headElement appendChild:styleElement]; 
+0

gracias robar, funciona bien – ADAM

+0

es posible usar esto para sobrescribir un elemento de estilo existente (para usar una hoja de estilo personalizado en lugar de un archivo CSS existente)? – bijan

+0

Casi con certeza sí. No hay nada mágico con esto, es solo la manipulación DOM de los elementos de la hoja de estilo. –

Cuestiones relacionadas