嵌入H5页面,点击之后拦截链接进行后续操作。
结果使用代理方法拦截不到:
public func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
decisionHandler(.allow)
}
分析点:H5 使用 Windowns.open 打开的url
遵守WKUIDelegate代理,实现如下方法
public func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
if navigationAction.targetFrame?.isMainFrame == nil {
webView.load(navigationAction.request)
}
return nil
}
分析一下意思,就是当跳到新的target,还是使用当前webview进行加载requset