所以我正在使用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,因此无法自行修改链接。
答案 0 :(得分:0)
尝试成为主框架的资源加载委托,并实现webView:resource:willSendRequest:redirectResponse:fromDataSource:
来修改所请求的URL。将relativeString
发送到请求的URL以获取原始相对URL,然后使用-[NSURL initWithString:baseURL:]
创建一个新URL,该URL与正确的基本URL具有相同的相对字符串。