問題
嵌入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