昨天在使用iOS8新出的WKWebView中,遇到了个小问题,特此记录:加载jsp页面后,页面中的链接点击没反应,跟了断点发现请求的url也正常,但是就是点击没反应,最终才知道jsp页面的:
<a href="xxx.jsp" target="_blank"/> 这个target参数是_blank
如果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 将会新开一个页面。