热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WKWebViewtarget="_blank"链接在safariios11,swift4中打开新选项卡

如何解决《WKWebViewtarget="_blank"链接在safariios11,swift4中打开新选项卡》经验,为你挑选了1个好方法。

我知道这个问题已经被问了很多,我想我已经查看了每一篇关于这个问题的帖子,但我仍然无法让它发挥作用.我是swift的新手,我认为这会阻止我从其他答案中调整代码片段.

所以这是我的问题:

我使用WKWebView在我的应用程序中查看网站.当我点击打开新标签的链接时,没有任何反应.我希望在Safari中打开新标签,或者至少在新的wkwebview中打开.我尝试从以下网址实现这个答案:https://stackoverflow.com/a/27391215,并在Safari中打开一个WKWebview target ="_ blank"链接以及许多其他类似的答案,但我没有取得任何进展.我需要做什么才能在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
}

但它似乎没有做任何事情.如果有人可以帮我指出正确的方向,我会非常感激.



1> samstride..:

我已经粘贴了一些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
    }

}


推荐阅读
author-avatar
aloneloveu2005
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有