WKWebView 在外部浏览器中打开 PDF
WKWebView open PDF in external browser
我有一个 IOS 应用程序可以使用 WKWebView 导航到网页。该页面本身在菜单中包含后退按钮。当我们点击一个 link 到 PDF 时,pdf 本身显示在视图中,但其他 html 内容(包括后退按钮)消失了。
我有什么方法可以检测 link returns PDF 并在 Safari 或类似浏览器中从外部打开该内容?
如果这不可能,我有没有办法检测 link returns PDF 并显示网络工具包后退按钮(仅针对该页面)。
编辑:澄清
单击以转到 pdf 的 link 实际上并不包含 pdf 文本。 link 看起来像 /Documents/GetDocument?docid=1234。
返回的内容类型为application/pdf。在理想情况下,我们将能够看到从 link 返回的内容,然后进行适当的处理。
你可以这样做
extension ViewController: WKNavigationDelegate{
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
print(navigationAction.request.url ?? "")
if let url = navigationAction.request.url?.absoluteString{
}
decisionHandler(.allow)
}
}
并且不要忘记分配
webView.navigationDelegate = self
当 webview 尝试加载新的 url 并且根据您的评论和更新的问题您想要检查 url 的 mime 类型时,将调用上述方法。为此,您可以参考
我有一个 IOS 应用程序可以使用 WKWebView 导航到网页。该页面本身在菜单中包含后退按钮。当我们点击一个 link 到 PDF 时,pdf 本身显示在视图中,但其他 html 内容(包括后退按钮)消失了。
我有什么方法可以检测 link returns PDF 并在 Safari 或类似浏览器中从外部打开该内容?
如果这不可能,我有没有办法检测 link returns PDF 并显示网络工具包后退按钮(仅针对该页面)。
编辑:澄清
单击以转到 pdf 的 link 实际上并不包含 pdf 文本。 link 看起来像 /Documents/GetDocument?docid=1234。
返回的内容类型为application/pdf。在理想情况下,我们将能够看到从 link 返回的内容,然后进行适当的处理。
你可以这样做
extension ViewController: WKNavigationDelegate{
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
print(navigationAction.request.url ?? "")
if let url = navigationAction.request.url?.absoluteString{
}
decisionHandler(.allow)
}
}
并且不要忘记分配
webView.navigationDelegate = self
当 webview 尝试加载新的 url 并且根据您的评论和更新的问题您想要检查 url 的 mime 类型时,将调用上述方法。为此,您可以参考