swift - 如何在 safari (WKWebView, webkit) 中使用 target="blank" 打开 url
问题描述
我正在开发一个应用程序,它基本上是一个 Web 视图,显示一个旨在模仿应用程序的网站。大多数 URL 将是内部的,但是会有一些会重定向到其他站点。所有这些链接都将具有 target="_blank"。
我花了几天时间浏览这个网站和其他网站,以找到一个可以在 safari 中打开 _blank URL 的解决方案,但是我尝试过的一切都失败了。
对此的任何帮助将不胜感激。我在视图控制器的代码下方添加了
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
@IBOutlet weak var webView:WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
webView.uiDelegate = self
let myURL = URL(string:"https://example.com")
let myRequest = URLRequest(url: myURL!)
webView?.load(myRequest)
}}
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
if let frame = navigationAction.targetFrame,
frame.isMainFrame {
return nil
}
webView.load(navigationAction.request)
return nil
}
解决方案
用这个替换你的 createWebViewWith
extension ViewController: WKUIDelegate {
//This opens maps or any other url given in new tab
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
if navigationAction.targetFrame == nil {
webView.load(navigationAction.request)
}
return nil
}
}
推荐阅读
- php - 无法声明类 FPDF,因为该名称已在使用中(Wordpress 自定义插件)
- java - 创建按钮,但每个按钮都有自己的变量名
- javascript - ParcelJS,在捆绑项目中使用 Chrome 控制台?
- javascript - Firebase 限制用户写入权限
- angular - 根据文档 ID 显示来自 Firestore 的数据
- sql - PostgreSQL:根据空值或非空值排除连接的 ID
- excel - Excel:返回第 1 到第 4 最常见价格的公式
- javascript - 声纳扫描仪 - 错误:无法在模块模式下使用 espree 解析器解析文件
- laravel - 在 Laravel 中使用 Tabler
- c# - 仅应用程序洞察日志异常