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

是否可以在WebKit中解析CSS数据之前对其进行操作?

我尝试过使用委托方法

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

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

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

最佳答案 只需加载一个用户样式表来覆盖你想要的任何CSS(这是CSS的“级联”部分).这是WebKit的核心功能.

WebPreferences setUserStyleSheetEnabled:

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

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

点赞