如果通过window.open更改子窗口位置,则window.open的意外行为,子窗口不从父页面映射

时间:2016-10-25 04:08:56

标签: javascript window.open window.opener

这是我在新标签页中打开网址的代码

<!DOCTYPE html>
<html>
<body>

<p>Click the button to open a new browser window.</p>

<button onclick="myFunction()">Try it</button>

<script>
function myFunction() {
    window.open("http://www.w3schools.com", 'school');
}
</script>

</body>
</html>

如果我继续单击按钮,每次子窗口获得焦点(名称为school)。

现在在子窗口控制台中,我执行了以下命令

window.open("http://www.google.com", 'school');

执行此操作后,如果转到父页面并单击按钮,则会打开一个新窗口,而不是映射到已打开的子窗口(window.name为'school')。

我不知道为什么

请帮我解决这个问题,在此先感谢

更新

  • 我点击了页面中的按钮,它会打开一个新的子窗口 (w3schools以window.name为学校)
  • 在子窗口(w3schools)浏览器控制台中,我运行了这个window.open("http://www.google.com", 'school');,现在是孩子 窗口位置为http://www.google.com而不是w3schools
  • 现在我再次单击页面中的按钮,它会打开一个新窗口,但我需要关注已打开的页面(其中包含 当前位置为google.com)

有可能实现吗?

1 个答案:

答案 0 :(得分:0)

很抱歉,上面的代码我与Cross来源进行了沟通,谢谢 @ guest271314 可能是打开多个窗口的原因。

不安全的JavaScript尝试启动带有来源框架的导航&#39; [这里的CHILD WINDOW URL]&#39;来自带有URL&#39; [PARENT WINDOW URL]&#39;的框架。尝试导航的框架既不是与目标相同的原点,也不是目标的父母或开场白。

根据错误,我点击按钮时与Cross原点进行通信,为了使工作正常,您必须让子窗口与父级相同。

让我们用上面的例子来描述:               

<p>Click the button to open a new browser window.</p>

<button onclick="myFunction()">Try it</button>

<script>
function myFunction() {
    window.open("http://www.w3schools.com", 'school');
}
</script>

</body>
</html>
  • 我点击了页面(父级)中的按钮,它会打开一个新的子窗口 (w3schools以window.name为学校)
  • 在子窗口(w3schools)浏览器控制台之前我运行了这个window.open("http://www.google.com", 'school');,它现在成为父级的交叉源,而不是我重定向到任何网址与下面的父母相同的起源 window.open("http://www.w3schools.com/js/js_examples.asp", 'school');

    工作正常,如果我点击页面中的按钮,子窗口会聚焦(以前新的窗口打开)

这里我提到我在子窗口浏览器控制台中执行了一些代码,但是在原始代码中我使用window.open在子窗口中执行misc操作

希望这有助于某人。