【问题标题】:How to get the download attribute from WKWebView?如何从 WKWebView 获取下载属性?
【发布时间】:2017-12-17 09:18:39
【问题描述】:
某些锚点的下载属性可能有或没有指定文件名 (Link)。如何在func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) 中检索此文件名?
【问题讨论】:
标签:
macos
download
webkit
wkwebview
【解决方案1】:
似乎 webview 和 navigationAction 参数都没有公开点击的锚标签的下载属性值。
我通过调用 webview.evaluateJavascript() 通过我们从 navigationAction.request.url.absoluteString 收到的 href 属性执行 document.querySelector() 解决了这个问题:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
webView.evaluateJavaScript("document.querySelector('[href=\"" + navigationAction.request.url.absoluteString + "\"]').download") {(result, error) in
let fileName = result as? String ?? "FALLBACK DEFAULT NAME.csv"
...
}
}