在使用window.close()之前检测它是否工作(JavaScript)
根据许多规则和安全功能,在使用window.close()之前检测它是否工作(JavaScript),javascript,window,Javascript,Window,根据许多规则和安全功能,window.close()仅在特定情况下有效: 对于窗口。关闭(): 如果满足以下所有条件,则窗口对象上的close()方法应关闭浏览上下文A: 相应的浏览上下文是脚本可关闭的 现任脚本的浏览上下文熟悉浏览上下文A 允许现任脚本的浏览上下文导航浏览上下文A 如果浏览上下文是由脚本创建的辅助浏览上下文(而不是由用户的操作创建的),或者如果它是会话历史记录仅包含一个文档的浏览上下文,则可以使用脚本关闭浏览上下文 我有一个允许用户关闭新窗口的web应用程序,它工作正常,除
window.close()
仅在特定情况下有效:
对于窗口。关闭()
:
如果满足以下所有条件,则窗口对象上的close()
方法应关闭浏览上下文A:
- 相应的浏览上下文是脚本可关闭的
- 现任脚本的浏览上下文熟悉浏览上下文A
- 允许现任脚本的浏览上下文导航浏览上下文A
window.opener
的信息,它从打开它的窗口返回一个引用。但它不起作用
if(window.opener != null){
//show button
}
这可能是因为新窗口是使用“右键单击->在新选项卡中打开”而不是脚本打开的。当选项卡以这种方式打开时,window.close()
起作用,我只想检测window.close()
何时起作用
有什么想法吗?据我所知,没有一种本土的方法可以做到这一点。通过检查
window.close
是否为false来检测错误,可以检查window.close()是否在事件发生后失败
您唯一的选择是提供关闭每个窗口的功能,或者在所有情况下尝试关闭,如果失败,请用户手动关闭它-否则,根据定义,您或您的任何代码都无法关闭它。不幸的是,没有办法解决这个问题。一个可能值得尝试的选项是,如果窗口无法以编程方式关闭,则将其重定向到某个位置,每次尝试后都可以轻松地进行验证。根据文档,如果给定上下文的会话历史长度为1,则窗口也可以脚本关闭(这正是在新选项卡/窗口中打开链接时发生的情况)。您需要将其添加到检查程序中
if(window.opener != null || window.history.length == 1){
//show button
}