两个 WKWebView 可以通过 opener 属性 链接吗?
Can two WKWebViews be linked via the opener property?
我正在从另一个打开 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
}
}
有没有办法设置开场白属性?
window.opener
为 null,因为我从 createWebViewWith
方法中 returning nil。我将其更改为 return 新的网络视图,并将新的 window 的开启器 属性 设置为 "parent" 网络视图。
func webView(... createWebViewWith ...) -> WKWebView? {
let newWebView = WKWebView(frame: webView.bounds,
...
return newWebView
}
我正在从另一个打开 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
}
}
有没有办法设置开场白属性?
window.opener
为 null,因为我从 createWebViewWith
方法中 returning nil。我将其更改为 return 新的网络视图,并将新的 window 的开启器 属性 设置为 "parent" 网络视图。
func webView(... createWebViewWith ...) -> WKWebView? {
let newWebView = WKWebView(frame: webView.bounds,
...
return newWebView
}