WKWebView 和 window.open

Posted

技术标签:

【中文标题】WKWebView 和 window.open【英文标题】:WKWebView and window.open 【发布时间】:2015-10-17 18:39:32 【问题描述】:

网站上的许多链接似乎在其 onclick 处理程序中使用 window.open,但 WKWebView 似乎完全忽略了 window.open。

有解决办法吗?

我尝试将 javascriptCanOpenWindowsAutomatically 首选项设置为 true,但这似乎没有帮助

【问题讨论】:

【参考方案1】:

当 Web 应用程序在 JavaScript 中调用 window.open() 时,WKWebView 将在其 UIDelegate 上调用 - webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures: 方法。

在该委托方法中,您应该使用提供给您的WKWebViewConfiguration 创建一个新的WKWebView。如果您在屏幕上显示这个新的WKWebView,它将加载正确的内容。

这在WKUIDelegate documentation 中有记录,尽管它不是很明确地表明这是作为window.open() 的结果而调用的。

【讨论】:

您能否添加有关如何使用 JavaScript 执行此操作的信息?我正在使用科尔多瓦! : D 这很明显,但您需要委托您的webView.uiDelegate 才能实现此createWebViewWith configuration。如果您从 UIWebView 迁移到 WKWebView,您将需要这个,因为 window.open 将不起作用。 您好@Stefan,createWebViewWithConfiguration 方法没有被触发可能是什么问题?尽管委托已设置为我的网络视图?感谢您是否可以减少 2 美分。此处发布的详细问题.. ***.com/questions/60851538/…

以上是关于WKWebView 和 window.open的主要内容,如果未能解决你的问题,请参考以下文章

WKWebView的介绍

avplayer 和 wkwebview 视频播放

如何从 WKWebView 启用和获取 cookie?

已有iOS项目集成cordova并使用wkwebview

WKWebView 和认证

WKWebView 禁用缩放和快速编辑