2010-03-19 35 views
7

我有下面的代码加载和HTML文件到网页视图的WebView加载CSS

- (void)awakeFromNib{ 

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

} 

我将如何动态地加载CSS文件(以最有效的方式),因为它不适合于在html文件中有css文件链接

回答

12

您应该使用Objective-C DOM API访问DOM,并将相应的<link><style>元素插入到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

thanks rob,well well – ADAM

+0

是否可以使用它覆盖现有样式元素(使用自定义样式表代替现有的css文件)? – bijan

+0

几乎可以肯定是的。没有什么魔术,它只是对样式表元素的DOM操作。 –