iOS: WKWebView 中超連結 target="_blank" 無法開啟網頁?

當我們使用 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
}

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *