一尘不染

在Safari中打开WKWebview target =“ _ blank”链接

swift

我试图让使用斯威夫特和WKWebviews打开,有一个链接我的混合iOS应用程序target="_blank",或者如果URL中包含http://https://mailto:在移动Safari浏览器。

从这个答案我得到了这段代码。

func webView(webView: WKWebView!, createWebViewWithConfiguration     configuration: WKWebViewConfiguration!, forNavigationAction navigationAction:     WKNavigationAction!, windowFeatures: WKWindowFeatures!) -> WKWebView! {
    if navigationAction.targetFrame == nil {
        webView.loadRequest(navigationAction.request)
    }
    return nil
}

首先,那对我没有任何帮助。其次,我希望它在新窗口中打开。我发现该代码应该执行类似的操作…

if let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") {
     UIApplication.sharedApplication().openURL(requestUrl)
}

如何将这两部分放在一起并使它们工作?我需要添加什么到ViewController声明中才能使其工作?


阅读 391

收藏
2020-07-07

共1个答案

一尘不染

针对iOS 10 Swift 3的代码已更新:

override func loadView() {
    super.loadView()
    self.webView.navigationDelegate = self 
    self.webView.uiDelegate = self  //must have this
}

func webView(_ webView: WKWebView,
               createWebViewWith configuration: WKWebViewConfiguration,
               for navigationAction: WKNavigationAction,
               windowFeatures: WKWindowFeatures) -> WKWebView? {
    if navigationAction.targetFrame == nil, let url = navigationAction.request.url {
      if url.description.lowercased().range(of: "http://") != nil ||
        url.description.lowercased().range(of: "https://") != nil ||
        url.description.lowercased().range(of: "mailto:") != nil {
        UIApplication.shared.openURL(url)
      }
    }
  return nil
}
2020-07-07