當我們使用 WKWebView 崁入網頁後,經常會遇到網頁中超連結設為 target=”_blank” 的網頁無法開啟。
此時可以在 ViewController 加入 WKUIDelegate 委派,然後將 WKWebView 的 uiDelegate 設為 self :
class MyViewController: UIViewController, WKUIDelegate { let wkWebView = WKWebView() override func viewDidLoad() { super.viewDidLoad() wkWebView.uiDelegate = self
然後實作以下方法,將 targetFrame 為空值 nil 的連結要求,重新載入 webView 即可:
func webView(webView: WKWebView!, createWebViewWithConfiguration configuration: WKWebViewConfiguration!, forNavigationAction navigationAction: WKNavigationAction!, windowFeatures: WKWindowFeatures!) -> WKWebView! { if navigationAction.targetFrame == nil { webView.loadRequest(navigationAction.request) } return nil }