javascript - 为什么 window.close 不适用于多个窗口

标签 javascript swift wkwebview wkwebviewconfiguration

我用过Handling new window inside webview .我使用了上述链接中的解决方案 2,该链接将新窗口添加到 subview

此链接中提供的解决方案效果很好。但是我在这里遇到的问题是,当我在 webview 中打开多个窗口时,我无法关闭打开它的父窗口。窗口的打开和关闭由在远程服务器上编写的简单代码控制,简单地由 window.open("some_valid_url")window.close() 组成来打开和关闭窗口分别。

我给 webview 比方说 www.someValidUrl.com,它有打开窗口和关闭窗口的代码。

例如: 主页 --> 然后主页打开窗口 A--> 然后窗口 A 打开窗口 B,现在如果我关闭窗口 B 然后尝试关闭窗口 A,窗口 A 不会关闭。

因此我无法返回主页。

我正在添加分别用于打开关闭 窗口的代码:

class ViewController: UIViewController, UIWebViewDelegate, CLLocationManagerDelegate,WKUIDelegate,WKNavigationDelegate
{
    @IBOutlet weak var webView: WKWebView!
    var popupWebView: WKWebView?
    ...
    func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
            popupWebView = WKWebView(frame: view.bounds, configuration: configuration)
            popupWebView!.autoresizingMask = [.flexibleWidth, .flexibleHeight]
            popupWebView!.navigationDelegate = self
            popupWebView!.uiDelegate = self
            view.addSubview(popupWebView!)
            return popupWebView!
        }
    func webViewDidClose(_ webView: WKWebView) {
        if webView == popupWebView {
            popupWebView?.removeFromSuperview()
            popupWebView = nil
        }
    }
    ...
}

我分享了唯一用于打开和关闭窗口的代码。我想允许在我的应用程序中打开和关闭多个窗口。任何帮助将不胜感激。

请询问您是否需要有关该问题的更多详细信息。

最佳答案

经过一些搜索和反复试验后,我找到了自己问题的答案,通过更改 webViewDidClose 中的代码如下:

    func webViewDidClose(_ webView: WKWebView) {
        webView.removeFromSuperview()
        popupWebView = nil
    }

希望这对面临同样问题的其他人有所帮助。

关于javascript - 为什么 window.close 不适用于多个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58056731/

相关文章:

swift - 使用 Alamofire 和 SwiftyJson 从函数返回值

ios - 如何从框架中调配 AppDelegate 的 didReceiveRemoteNotification

javascript - 在window.onload之前执行耗时的任务

javascript - 如何通过 JavaScript 显示图像

Swift:仅包含数字和 "."的文本字段

ios - WKWebView 未加载网页 - 在 Swift 中呈现空白屏幕

WKWebView 中的 iOS Objective-C LocalStore

ios - 在不将 baseURL 设置为 bundleURL 的情况下在 WKWebView 中使用自定义字体

javascript - 在每个 + 后面插入 1

javascript - 在 jQuery 中获取数据而不是重复使用 parent() 和 next() 的替代方法?