Javascript 窗口是否可以保留window.opener引用而不被window.open()打开?
我想知道,在较新版本的JavaScript中(我正在使用React ES6,如果它考虑到了所有因素的话),窗口中的脚本是否可以有一个Javascript 窗口是否可以保留window.opener引用而不被window.open()打开?,javascript,browser,window,window.opener,Javascript,Browser,Window,Window.opener,我想知道,在较新版本的JavaScript中(我正在使用React ES6,如果它考虑到了所有因素的话),窗口中的脚本是否可以有一个window.openerwherewindow.opener!==null,而不是首先使用open()命令由同一脚本打开?这是一个令人困惑的问题,所以让我试着澄清一下 我目前在我的JS应用程序(在Chrome中运行)中遇到一个控制台错误,该错误为:脚本可能无法关闭未由脚本打开的窗口。我看到了许多关于如何在当前脚本未打开的窗口上使用window.close()的详细
window.opener
wherewindow.opener!==null
,而不是首先使用open()
命令由同一脚本打开?这是一个令人困惑的问题,所以让我试着澄清一下
我目前在我的JS应用程序(在Chrome中运行)中遇到一个控制台错误,该错误为:脚本可能无法关闭未由脚本打开的窗口。
我看到了许多关于如何在当前脚本未打开的窗口上使用window.close()
的详细问题,但这不是我的问题。我的密码是:
if (window.opener) {
window.close();
} else {
// do something else
}
据我所知,
window.close()
是唯一可以生成此浏览器错误的函数脚本可能不会关闭未由脚本打开的窗口。
但我还认为如果对window.opener
有非空引用,我正在运行的脚本一定是当前窗口的开启者。那么,window.close()
怎么会出错,说这个脚本没有打开窗口,但是有一个window.opener
引用是非空的?你试过查看window.opener.toString()
或者JSON.stringify(window.opener,null,2)
?我很清楚有一个对window.opener
的引用——我不需要用.toString()
来确认这一点。如果不是这样的话,上述条件就不会通过。我现在需要知道的是window.close()
是如何出错的,但是有一个非null的窗口。opener
我想这是一个建议,可以查看设置为帮助trobleshoot为什么它不是null/未定义的引用。啊,是的。很遗憾,我现在无法重现这个错误。这就是为什么我只是想假设这是怎么发生的,如果可能的话。窗口。如果窗口是由具有target=“\u blank”
的元素打开的,则将设置opener
,例如设置了该设置的锚或窗体