WkWebView 不加载指向 pdf 的链接

Rya*_*yan 2 swift wkwebview

WKWebView 未加载链接。我将用户链接到隐私政策页面,该页面有一组链接。这些链接都是由 wix 托管的所有 pdf。在 safari 和 Chrome 上它有效,但在 WKWebView 上无效。当页面加载时,您单击链接,我只是收到一个错误:

Unknown result for URL 0x28157d110 (https)
Run Code Online (Sandbox Code Playgroud)

这就是我加载网络视图的方式...

webView.load(URLRequest(url: URL(string: "https://mywebsite.io/legal")!))
Run Code Online (Sandbox Code Playgroud)

编辑:这与其他问题不同,因为我无意下载 pdf - 我只想以与 Safari 相同的方式显示它。

编辑:我刚刚用 UIWebView(已弃用)和 pdfs 加载替换了 WKWebView。问题在于 WKWebView。Pdfs 是支持 ssl 的 https ->

let req = URLRequest(url: URL(string: "https://mywebsite.io/legal")!)
    legacyWebView.loadRequest(req)
Run Code Online (Sandbox Code Playgroud)

编辑:这里有一个页面How to open a Link to a PDF with wkwebview这表明您必须在打开 pdf 之前知道链接 URL,但我认为这不是真的。

编辑:我实现了 2 个委托方法,包括@Kiril 在下面建议的方法。pdf 的链接仍然打不开。

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        decisionHandler(WKNavigationActionPolicy.allow)
    }
    func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
        decisionHandler(WKNavigationResponsePolicy.allow)
    }
Run Code Online (Sandbox Code Playgroud)

Tom*_*ven 10

您可以检查以下几项内容:

  1. 验证<a href链接不包含target="_blank"属性,因为 WKWebView 不知道如何在新选项卡中打开链接。有关如何解决该问题,请参阅/sf/answers/1809766451/

  2. 检查链接是否为 HTTPS 或App Transport Security Settings使用Allow Arbitrary Loads选项更新

  3. 确保仅在将 WKWebView 添加到视图层次结构之后才开始加载请求,didMoveToParentViewController:因为如果它尝试在视图层次结构之外运行,它可能会使 javascript 失败

  4. 实现 WKWebView NavigationDelegate 方法并确保WKNavigationActionPolicyAllow在决定请求策略时返回