ios - 是否可以通过单击应用程序的 WebView 中的 URL 打开移动 safari?

标签 ios swift webview safari

这和Open mobile Safari From a link in a webview 是同一个问题.
上面问题的答案提到可以从Chrome打开。
另外,这个 question提供了一个解决方案,但在 iOS 8 以上的 webview 中不起作用。

但是,我想实现的目标是通过单击应用程序(可能是 gmail 客户端、whatsapp、facebook 信使等)的 webview 中的 URL 打开移动 Safari。

我会描述我的用户场景以使我的问题更清楚。


我有一个网站,其中包含网站 A 的链接。用户可能会在 gmail 应用程序、facebook messenger 或 whatsapp 中收到我网站的 URL。当用户点击我网站的 URL 时,该网站将直接显示在应用程序的 webview 中。当用户点击网站A的链接时,我希望它能在mobile Safari中打开网站A,而不是停留在webview中,因为我需要Safari提供的add to screen功能,方便用户将网站A添加到主屏幕。


没有像 safari://xxx 这样的 url-scheme。是否有任何 JavaScriptHTML 方法可以实现此目的?
我在网上搜索过,但找不到适用于以上 iOS 8 的解决方案。
任何建议表示赞赏。非常感谢!

最佳答案

是的。

将委托(delegate)添加到您的 webview 并实现以下方法:

  optional  func webView(_ webView: UIWebView,
shouldStartLoadWithRequest request: NSURLRequest,
     navigationType navigationType: UIWebViewNavigationType) -> Bool

如下:

func webView(webView: UIWebView, request: NSURLRequest,navigationType: UIWebViewNavigationType) -> Bool {

 //Check if the URL is the one you want in mobile safari   
 if request.URL.absoluteString == THE_URL_TO_OPEN_IN_MOBILE_SAFARI {
        UIApplication.sharedApplication.openURL(request.URL)
        return false
    }else{
        return true
    }
}

关于ios - 是否可以通过单击应用程序的 WebView 中的 URL 打开移动 safari?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37180500/

相关文章:

ios - 类方法中的static关键字是什么意思

swift - 命令行工具中的框架问题

swift - 带有函数调用选项的 if 语句

android - 如何在 Web View 或 JavaScript 中向 Camera Intent 或 Gallery Intent 添加裁剪功能

android - 如何在 webview 中显示无互联网连接对话框 |安卓工作室

objective-c - 是否可以访问 XCode 的目标版本和内部版本号?

ios - 使用 Alamofire 的 responseSerializationFailed

ios - 由于 Razorpay,Ionic 3 iOS 构建和上传失败

arrays - Swift 中的数组有顺序吗?

javascript - 无法让 javafx 和 webview 处理 google javascript