我知道这个问题已经被问了很多,我想我已经查看了每一篇关于这个的帖子,但我仍然无法让它发挥作用。我是 swift 的新手,我认为这阻碍了我从其他答案中调整代码片段。
所以这是我的问题:
我正在使用 WKWebView 在我的应用程序中查看网站。当我单击打开新选项卡的链接时,什么也没有发生。我希望在 safari 中或至少在新的 wkwebview 中打开该新选项卡。我尝试从以下位置实现此答案:https://stackoverflow.com/a/27391215 , 和 Open a WKWebview target="_blank" link in Safari和许多其他类似的答案,但没有取得任何进展。我需要做什么才能在 swift 4 中完成这项工作?
目前我只有这个,因为我无法实现我成功找到的任何其他解决方案:
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
if navigationAction.targetFrame == nil {
webView.load(navigationAction.request)
}
return nil
}
但它似乎没有任何作用。如果有人能帮助我指明正确的方向,我将不胜感激。
最佳答案
我粘贴了一些 的示例代码WKWebView 项目(从文件夹加载本地 html)需要具有 target=_blank
的链接在新的浏览器窗口中打开。
我已经强调了正确打开链接所必须具备的 3 件事。
class ViewController extends WKUIDelegate
self.webView.uiDelegate = self
UIApplication.shared.open
而不是 webView.load
让我知道它有效,如果有人可以对下面的示例代码提出改进建议,那也会对我有帮助:)
的完整示例代码Xcode 9.2,Swift 4 以下。
祝你好运
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate, WKUIDelegate {
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
self.webView.uiDelegate = self
let htmlPath = Bundle.main.path(forResource: "index", ofType: "html", inDirectory: "www")
let htmlUrl = URL(fileURLWithPath: htmlPath!)
let htmlDir = Bundle.main.url(forResource: "www", withExtension: nil)
webView.loadFileURL(htmlUrl, allowingReadAccessTo: htmlDir!)
}
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
if navigationAction.targetFrame == nil {
//webView.load(navigationAction.request)
UIApplication.shared.open(navigationAction.request.url!, options: [:])
}
return nil
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override var prefersStatusBarHidden: Bool {
return true
}
}
关于safari - WKWebView 目标 ="_blank"链接在 safari ios11、swift 4 中打开新标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48073805/