ios - 在新窗口或选项卡中打开的链接未在 native iOS 中加载

标签 ios swift wkwebview

我的应用程序中有一个 WKWebView,单击它时 WKWebView 中有一些按钮,但未加载新页面。从外观上看,他们正试图打开一个 about_blank 页面。在浏览器中,链接在新页面中打开并加载 URL。

最佳答案

执行此操作的方法是实现 WKUIDelegate 并覆盖此方法

func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView?

如果您使用传递的配置返回一个新的 WKWebView,请求将被加载到一个新的 webview。由于 target=_blank 尝试在浏览器中打开一个新窗口,因此此方法弥补了 iOS 中的不足。您可以使用这个新的 WKWebView 启动一个新的 UIViewController,其中请求 target=_blank 页面。

这是一个简单的例子,我用新的 webView 替换主 WKWebView,并在同一个 viewcontroller 中加载请求,

extension ViewController: WKNavigationDelegate, WKUIDelegate {

    public func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
        let newWebView = WKWebView(frame: self.webView.frame,
                         configuration: configuration)
        view.addSubview(newWebView)
        return newWebView
    }
}

这在某种程度上类似于浏览器中的选项卡。但是,请记住,随着上述更改,向前和向后不起作用,因为您已经创建了一个新的 webview。如果你想让一切正常,我建议你用这个 webview 加载一个新的 viewcontroller 或者创建一个新的 View 来加载和显示它,你可以切换到其他主 webview。

关于ios - 在新窗口或选项卡中打开的链接未在 native iOS 中加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49902667/

相关文章:

ios - 在 React Native bridge 上调用方法时 Bridge 为 nil,使用单例?

ios - 使用 NSFetchedResultsController 时如何在每个部分获取一条记录

objective-c - 如何从 Objective-C 调用带有闭包的 Swift 异步方法

iPhone 上的 iOS WKWebView 文件上传失败

ios - 在公共(public)接口(interface)和私有(private)接口(interface)/实现文件上声明协议(protocol)的区别

iOS App Extension 的最大内存预算

ios - 当CollectionView只有一个项目时,如何使垂直uiCollectionViewCell变为左侧

ios - 谷歌地图 IOS SDK : viewMap. myLocationEnabled = true。不工作

ios - 在 WKWebview 中设置用户代理

ios - KVO - UIScrollView.contentSize 误报?