我可以强制将WebView(或WebFrame)中的所有链接视为绝对路径吗?

时间:2009-08-14 04:28:18

标签: objective-c cocoa webkit webview

所以我正在使用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,因此无法自行修改链接。

1 个答案:

答案 0 :(得分:0)

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