繁体   English   中英

在Safari中打开其他网站的WKWebView链接

[英]Open WKWebView links for other websites in Safari

我有一个带有wkwebview的应用程序。 我需要帮助的是,当用户单击Web视图内的链接时,它会在Safari中打开。 但是,如果他们单击具有相同域的链接,则会在Web视图中打开该链接。

例如。 如果Webview打开apple.com,并且用户单击打开apple.com/iphone的链接,我希望它在Webview内部打开。 但是,如果他们单击打开google.com的链接,我希望它在野生动物园应用程序中打开。 您能给我一些代码以便我实现吗?

(这是使用Swift 3的iOS应用)

WKNavigationDelegate实现webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) 您可以在此处检查所选链接的主机是否与初始请求中的主机相同。 如果不是,则通过UIApplication.shared.open(url)打开链接,并使用.cancel执行决策处理程序-这样该链接不会加载到您的Web视图中。 否则就允许...

快速而肮脏的版本是(Swift 4):

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
  if navigationAction.navigationType == .linkActivated  {
    if let url = navigationAction.request.url, 
       originalHost != url.host, UIApplication.shared.canOpenURL(url) {
      UIApplication.shared.open(url)
      decisionHandler(.cancel)
    } else {
      decisionHandler(.allow)
    }
  } else {
    decisionHandler(.allow)
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM