我写了一个简单的应用程序,它调用了一个webview(位于XXXXXX.com/webview.php
这是我在swift中打开webview的代码:
if let url = URL(string: "https://www.XXXXXX.com/webview.php") {
let request = URLRequest(url: url)
webView.loadRequest(request)
}
现在,此webview系统中的所有内部链接(例如/webview_subsite2.php)都在此webview中打开。那好极了。 但是我想在Safari浏览器中打开所有外部链接(target = _blank)。 我怎样才能做到这一点?
我之前的问题被标记为重复,但它不是。 关键是,上面发布的代码不是链接的调用! 这是webview的调用。 我的问题涉及如何打开所有外部链接 INSIDE此webview ,该链接位于Safari中的XXXXXX.com/webview.php(域审查),而不在此webview-Frame中。快速解决方案是必要的。
答案 0 :(得分:0)
使用shouldStartLoadWithRequest webView委托方法并检查navigationType.linkClicked
类型并打开safari中的链接
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if navigationType == UIWebViewNavigationType.linkClicked {
if #available(iOS 10.0, *) {
UIApplication.shared.open(request.url!, options: [:])
} else {
UIApplication.shared.openURL(url)
}
return false
}
return true
}
答案 1 :(得分:0)
您可以在WKNavigationDelegate上实施webView:decidePolicyForNavigationAction:decisionHandler:
。将WKNavigationActionPolicyAllow
返回到与您的"内部"匹配的网址的完成处理程序域名,以及WKNavigationActionPolicyCancel
用于不包含的域名,并处理要在Safari中加载的网址。