webview - Window.open() 在 WKWebView 中不起作用
问题描述
我试图在 Safari 浏览器中打开一个 URL,同时从应用程序的 iOS WKWebView 中单击它,但是当我从 javascript 调用 window.open() 时没有任何效果。
它没有达到 WKWebView 中的决定策略,
[Foundation.Export("webViewecidePolicyForNavigationActionecisionHandler:")]
public void DecidePolicy(WKWebView webView, WKNavigationAction navigationAction, Action<WKNavigationActionPolicy> decisionHandler)
我试图覆盖 WKUIDelegate 方法,但它不起作用。:(
谁能帮帮我?
解决方案
注意 - 我没有 xamarin 经验,但我知道“window.open()”js 如何在 WKWebView 中使用本机代码工作,所以我希望这个答案能帮助您连接缺失的点。
首先,在您配置网络视图的位置设置 UIDelegate ..(在您的情况下为 viewDidLoad)
webView.uiDelegate = self
其次,实现UIDelegate的这个协议方法。这个想法是动态创建一个 web 视图和一个动态视图控制器,并呈现/推送它并将这个 web 视图实例返回给 WebKit,以便它可以建立与父 web 视图的链接并加载 url(window.xml 的第一个参数)。公开电话)。
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
let childWebView = WKWebView(frame: .zero, configuration: configuration) // Must use the configuration provided by this method
let webViewController = ViewController() // create an instance of a new view controller that you want to push or present with a web view
webViewController.webView = childWebView // provide this new child web view to view controller for layout purpose
navigationController?.pushViewController(webViewController, animated: true)
return childWebView
}
推荐阅读
- python-3.x - kwargs.get() 没有检索到值
- opengl - 即使块名称正确,glGetUniformBlockIndex 也会返回 -1
- javascript - 如何在 EcmaScript6 类中使用 addEventListener?
- sqlite - 如何在 Kotlin 中设置 SQLite?
- r - 调整 geom_point 大小以便绘制大值,但在 ggplot2 中不会显得更大?
- javascript - 如何访问没有键的对象,只有值javascript
- sed - sed 在替换操作后创建空文件
- python - 加密 Python 加密
- git - IntelliJ - 同时推送到 2 个 Git 存储库
- python - 如何让streamHandler每次都覆盖