我要从另一个打开WKWebView,希望两者能够通过JavaScript相互通信。
以下代码打开两个Web视图-我可以使用Safari调试器对其进行检查。但是第二个Web视图的opener
属性是null
。
class MyVC: UIViewController {
override func viewDidLoad() {
...
// "webView" is the first web view. Open a second one...
webView = WKWebView()
webView.uiDelegate = self
webView.evaluateJavaScript("window.open('about:blank');")
}
}
extension MyVC : WKUIDelegate {
func webView(... createWebViewWith ...) -> WKWebView? {
let newWebView = WKWebView(frame: webView.bounds,
configuration: configuration)
newWebView.load(navigationAction.request)
let vc = UIViewController()
vc.view.addSubview(newWebView)
navigationController?.pushViewController(vc, animated: true)
return nil
}
}
是否可以设置打开器属性?
答案 0 :(得分:0)
window.opener
为空,因为我从createWebViewWith
方法返回nil。我将其更改为返回新的Web视图,并将新窗口的opener属性设置为“父” Web视图。
func webView(... createWebViewWith ...) -> WKWebView? {
let newWebView = WKWebView(frame: webView.bounds,
...
return newWebView
}