昨天在使用iOS8新出的WKWebView中,遇到了個小問題,特此記錄:加載jsp頁面后,頁面中的鏈接點擊沒反應(yīng),跟了斷點發(fā)現(xiàn)請求的url也正常,但是就是點擊沒反應(yīng),最終才知道jsp頁面的:
<a href="xxx.jsp" target="_blank"/> 這個target參數(shù)是_blank
如果WKWebView中的網(wǎng)頁,點擊鏈接木有反應(yīng),那么很有可能是這個用戶點擊網(wǎng)頁上的鏈接,需要打開新頁面時,將先調(diào)用這個方法。
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)
...
}
這個方法的參數(shù) WKNavigationAction 中有兩個屬性:sourceFrame和targetFrame,分別代表這個action的出處和目標(biāo)。類型是 WKFrameInfo 。WKFrameInfo有一個 mainFrame 的屬性,正是這個屬性標(biāo)記著這個frame是在主frame里還是新開一個frame。
如果 targetFrame 的 mainFrame 屬性為NO,表明這個 WKNavigationAction 將會新開一個頁面。