javascript - wkwebview:找出在 web View 中加载的内容是否为 PDF 并给出下载按钮

标签 javascript ios swift pdf wkwebview

我正在使用 wkWebView 加载发表在 IEEE、Science Direct 等上的研究论文,所以当我点击研究论文中的任何 PDF 时,PDF 会加载到 webview 中,所以有没有办法在 wkWebView 中检测并启用下载图标。

尝试过的解决方案: 我试图通过 URLSession 从 URL 获取 pdf,这在 95% 的时间里有效,但有时我无法通过 获取 PDF 的内容>URLSession 由于动态 URL/PDF 创建,pdf 被加载到 webview 中。

在研究中,我遇到了: Get already loaded PDF directly from WKWebView without downloading again但就我而言,首先我需要检查加载的内容是否为 PDF。

相关问题: add download button for pdf in wkwebview in swift 4但是没有答案!!!

测试: 打开 URL:https://www.sciencedirect.com/science/article/pii/S0946672X17308763wkWebView 中单击“下载 PDF”按钮,这会将 pdf 加载到 webview 中。

简而言之:任何检测加载的内容是否为 PDF 并提供下载按钮以将 pdf 内容下载到文档文件夹中的方法。

感谢任何帮助...谢谢

最佳答案

我试过您提供的链接,下载按钮似乎在新窗口中打开 PDF(html 标签),而 WKWebView 只是忽略了它。

要使导航成为可能,您应该在 View Controller 中采用 WKUIDelegate 协议(protocol)并实现委托(delegate)方法:

override func viewDidLoad() {
   super.viewDidLoad()     
   self.webView.uiDelegate = self
}

func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
    if navigationAction.targetFrame == nil {
        // Here we load this request manually in current window
        webView.load(navigationAction.request)
    }
    return nil
}

在此示例中,PDF 将直接加载到 Web View 中,您可以像浏览普通 PDF 文件一样浏览/下载它。 如果您随后需要下载该 PDF(加载后),则需要使用 Fetch API,如所述 here.

关于javascript - wkwebview:找出在 web View 中加载的内容是否为 PDF 并给出下载按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60209529/

相关文章:

swift - 在 Swift 中使用 Tab 键选择下一个 NSTextField

javascript - 从 axios 响应 reactjs 填充输入字段

javascript - jQuery 中使用变量的多个动态选择器

ios - 如何将NSURL对象从一个ViewController传递到另一个ViewController

objective-c - Core Data - 通过 URI 获取托管对象

ios - 是否有特定的方法来监听 PDFDocument 或 PDFView url 加载完成?

javascript - Angular ,Socket.io : Emit an array of object

带有 UDP 的 JavaScript WebSockets?

ios - 让 KIF 点击只有部分文本已知的 View

ios - 如何在 Swift 中验证 X509Certificate?