Javascript 窗口是否可以保留window.opener引用而不被window.open()打开?

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()的详细

我想知道,在较新版本的JavaScript中(我正在使用React ES6,如果它考虑到了所有因素的话),窗口中的脚本是否可以有一个
window.opener
where
window.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
,例如设置了该设置的锚或窗体