在加载之前操纵WebKit CSS数据?

时间:2010-01-04 17:19:54

标签: cocoa macos webkit

在WebKit中解析CSS数据之前是否可以操作它?

我尝试过使用委托方法

- (NSURLRequest *)webView:(WebView *)sender
                 resource:(id)identifier
          willSendRequest:(NSURLRequest *)request
         redirectResponse:(NSURLResponse *)redirectResponse
           fromDataSource:(WebDataSource *)dataSource

我可以通过写下我操纵的CSS来做工作,然后返回一个指向它的替代NSURLRequest。这样工作正常,除了DOM树,然后包含操纵的URLRequest的路径,而不是原始的,这对我的应用程序来说是坏消息。

我可以在解析之前操作内存中的数据吗?

2 个答案:

答案 0 :(得分:2)

只需加载用户样式表以覆盖您想要的任何CSS(这是CSS的“级联”部分)。这是WebKit的核心功能。

WebPreferences setUserStyleSheetEnabled:

在实践中有一个这样的例子,你可以看看PandoraBoy的PlayerController,它有钩子(虽然我不需要实际使用它们)。查看-awakeFromNib

编辑:如果你真的需要用一种对WebKit完全透明的方式替换你自己的CSS文件,那么这是可能的,但它更多的工作,更混乱,通常不需要。也就是说,PandoraBoy遇到了这个问题,并且有一个解决方案。请看ResourceURLProtocol

答案 1 :(得分:0)

只要您可以将其保持在10MB限制以下,就会始终stringByEvaluatingJavaScriptFromString然后执行一些loading of the CSS dynamically.