考虑以下情况:
注意:我们无法控制网站C,也无法控制它们如何重定向到网站B。而且,这只发生在Firefox/Safari上。在Chrome上,我们能够在重定向之后获得原始的开线器参考。
如果网站C正在用rel=noopener重定向,则window.opener应该为null (来自MDN的参考)。我无法理解在这种情况下,window.opener可以是当前的窗口对象,以及为什么它发生在Firefox/Safari上,而不是在Chrome上?除了网站C,我们还能做些什么来防止这种情况发生吗?
发布于 2022-02-17 17:12:59
这在火狐和Safari中是可能的,当您添加目标_self时,_self可以是当前窗口。如果您执行window.open('someurl', '_self'),那么window.opener将是当前窗口,并将在相同的选项卡中打开,而不是在新的选项卡中打开。这种情况只发生在safari和firefox中(据我观察到)。在任何情况下,所有基于铬的浏览器都不会更改原来的开窗器。
我不知道safari和firefox以这种方式处理它的确切原因,我试图找出原因,但找不到。
我曾经面对过这个问题,我们做过的解决方案是让网站C使用window.location.replace或window.location.href重定向回网站B,这样他们就在同一个选项卡中打开了网站b。
https://stackoverflow.com/questions/71154547
复制相似问题