代码之家  ›  专栏  ›  技术社区  ›  alekop

可以通过opener属性链接两个wkwebview吗?

  •  -1
  • alekop  · 技术社区  · 6 年前

    我正在打开另一个wkwebview,希望两者能够通过javascript进行通信。

    下面的代码打开两个web视图-我可以使用safari调试器检查它们。但是 opener 第二个web视图的属性是 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
        }
    
    }
    

    有没有办法设置opener属性?

    1 回复  |  直到 6 年前
        1
  •  0
  •   alekop    6 年前

    这个 window.opener 是空的,因为我从 createWebViewWith 方法。我将其更改为返回新的web视图,并将新窗口的opener属性设置为“parent”web视图。

    func webView(... createWebViewWith ...) -> WKWebView? {
        let newWebView = WKWebView(frame: webView.bounds,
        ...
        return newWebView
    }