我试图在 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 中使用本机代码工作,所以我希望这个答案将帮助您连接缺失的点。
首先,在配置 Web 视图的位置设置 UIDelegate..(在您的情况下在 viewDidLoad 中)
webView.uiDelegate = self
其次,实现UIDelegate的这个协议方法。这个想法是创建一个动态的 Web 视图和一个动态的视图控制器,并呈现/推送它,并将该 Web 视图实例返回到 WebKit,以便它可以与父 Web 视图建立链接并加载 url(window.webview 的第一个参数)。公开征集)。
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
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)