在 swift 的网络视图中处理 target="_blank"
Handle target="_blank" in webview in swift
我正在实现一个 Web 视图,用于使用 Web 视图从我的应用程序中的 URL 加载内容。我希望带有 target="_blank" 的 url 应该在浏览器中打开,否则只能在应用程序中打开。
我正在使用
url = NSURL (string: "\(urlBase)\(response![0].Message ?? "")")!
let requestObj = URLRequest(url: url as URL)
webVFAI.loadRequest(requestObj)
这会在应用程序中打开 url,但我希望如果我的 url 包含目标 ="_blank",它应该在浏览器中打开它。如何处理?
请指导
我刚刚找到了解决方案。我刚刚检查了我的 pageid 以决定是在浏览器中还是在应用程序中打开 url
我使用了 shouldStartLoadWith 函数
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if(condition) {
switch navigationType {
case .linkClicked:
guard let url = request.url else { return true }
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(url)
}
return false // opens in browser
default:
return true // opens in app
}
}
return true;
}
我正在实现一个 Web 视图,用于使用 Web 视图从我的应用程序中的 URL 加载内容。我希望带有 target="_blank" 的 url 应该在浏览器中打开,否则只能在应用程序中打开。
我正在使用
url = NSURL (string: "\(urlBase)\(response![0].Message ?? "")")!
let requestObj = URLRequest(url: url as URL)
webVFAI.loadRequest(requestObj)
这会在应用程序中打开 url,但我希望如果我的 url 包含目标 ="_blank",它应该在浏览器中打开它。如何处理? 请指导
我刚刚找到了解决方案。我刚刚检查了我的 pageid 以决定是在浏览器中还是在应用程序中打开 url 我使用了 shouldStartLoadWith 函数
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if(condition) {
switch navigationType {
case .linkClicked:
guard let url = request.url else { return true }
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(url)
}
return false // opens in browser
default:
return true // opens in app
}
}
return true;
}