javascript - 为什么 window.close 不适用于多个窗口
问题描述
我在 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
}
希望这可以帮助面临同样问题的其他人。
推荐阅读
- r - 如何将观察结果添加到现有数据框列?
- javascript - 如何将 1000 多行复制到新的 Google 表格?
- python - Python socket.recv 挂起
- reactjs - createMaterialBottomTabNavigator 中的图标未显示
- python - 在不直接引用变量的情况下更改列表内的变量的值
- vb.net - 返回值被赋值,但总是返回为 0
- mongodb - 使用 mongo-go-driver 创建动态过滤器
- r - 将网络/igraph 对象转换为 plotly
- sql - 如何获取 DB2 上每个用户的用户列表的最后一次访问?
- swift - 如何更改标签中每 5 个第一个单词的文本颜色?