代码之家  ›  专栏  ›  技术社区  ›  Jeff Barger

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

  •  0
  • Jeff Barger  · 技术社区  · 16 年前

    所以我正在使用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 回复  |  直到 16 年前
        1
  •  0
  •   Peter Hosey    16 年前

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