0

所以我正在使用 WebKit 的 - WebView 和 WebFrame。我使用自定义 NSURLProtocol 从数据库中检索每个请求的 HTML。问题在于 HTML 中的链接都是相对的,而实际上它们应该是绝对的。例如,页面

foo/bar.html

可能有一个链接指向

foo/baz.html

问题是,由于链接是相对的,因此请求最终是针对

/foo/foo/baz.html

到目前为止,我已经尝试通过比较两个 URL 并去除公共前缀(在本例中为“foo/”)来解决此问题,留下 foo/baz.html。然而,这并不适用于所有可能性,尤其是当路径中有多个目录时。我在 WebView 的 frameLoadDelegate 的“didStartProvisionalLoadForFrame:”方法中执行此操作。

不幸的是,我无法控制正在显示的 HTML,因此修改链接本身不是一种选择。

4

1 回答 1

0

尝试成为主框架的资源加载委托,并实施webView:resource:willSendRequest:redirectResponse:fromDataSource:以修改所请求的 URL。发送relativeString到请求的 URL 以获取原始相对 URL,然后使用-[NSURL initWithString:baseURL:]与正确的基本 URL 相同的相对字符串创建一个新 URL。

于 2009-08-14T04:53:55.310 回答