如何检测window.close()是否执行失败?

时间:2018-08-17 09:23:51

标签: javascript

在我的脚本中,我需要执行window.close();,但是它有可能失败(注意:请参见下文以进行解释),因此我想跟进{{1} }  window.close();,可以将用户重定向到页面并重定向到正确的网络流。

我尝试了以下方法:

代码1

window.history.back()

以上内容一直有效,但是如果我这样做:

代码2

window.close();
window.history.back();

警告窗口甚至可以关闭。因此,让我想知道代码1是否可以安全使用。

所以我有以下问题:

  • 可以安全地假设在代码1中,window.close(); alert("123"); window.history.back(); 将始终在window.close()之前运行吗?

    • 并且仅在不允许使用window.history.back()的情况下,才会调用window.close()
  • 如果不是,那么是否有可能检测到window.history.back() 未被呼叫的事件?这样我就可以继续执行我想要的代码

注意:

  • 该代码正在多个平台上运行,我发现在iOS10 SFSafariViewController中,由于某种原因它不知道window.close(),因此我需要在知道{{1 }}失败

谢谢!

3 个答案:

答案 0 :(得分:1)

怎么样

try {
  window.close();
}
catch(err) {
  window.history.back();
}

答案 1 :(得分:0)

我发现了一些here,它可以对其进行详细说明,但实际上答案是您不能。最好的办法是使用unloadonunload检测onbeforeunload事件。尝试使用它们,看看会发生什么。

答案 2 :(得分:0)

您是否考虑过添加try .. catch块?

try {
window.close();
}
catch(error) {
console.error(error);
// Note - error messages will vary depending on browser
}

Documentation