如果WKWebView中的网页,点击链接木有反应,那么很有可能是这个用户点击网页上的链接,需要打开新页面时,将先调用这个方法。
func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) { let requestUrlStr = navigationAction.request.URL?.absoluteString//需要判断targetFrame是否为nil,如果为空则重新请求 if navigationAction.targetFrame == nil { webView.loadRequest(navigationAction.request) } decisionHandler(.Allow) ...}
这个方法的参数 WKNavigationAction 中有两个属性:sourceFrame和targetFrame,分别代表这个action的出处和目标。类型是 WKFrameInfo 。WKFrameInfo有一个 mainFrame 的属性,正是这个属性标记着这个frame是在主frame里还是新开一个frame。
如果 targetFrame 的 mainFrame 属性为NO,表明这个 WKNavigationAction 将会新开一个页面。