浏览器 window.open 方法提供了一种按名称访问打开窗口的方法。例如,
窗口 A:
window.open('','myWindowName')
这将打开一个带有 window.name == 'myWindowName' 的空白窗口 B。然后,
窗口 C:
window.open('http://example.com', 'myWindowName')
这将在窗口 B 中打开 example.com。
问题:
我如何设置一个已经打开的窗口的名称,以便其他窗口可以使用 window.open 访问它,而不是创建一个名称 == 'myWindowName' 的新窗口?使用 Chrome,以下操作不起作用:
1.在目标窗口打开如下html
<!DOCTYPE html>
<html>
<head>
<script>window.name='myWindowName'</script>
</head>
<body>
target window
</body>
</html>
在目标窗口中执行 window.name 现在会产生“myWindowName”
2.从另一个窗口的控制台执行以下js
window.open('http://example.com', 'myWindowName')
上面的代码在新窗口中打开 example.com(也使用 window.name 'myWindowName')而不是目标窗口。
编辑:
出于某种原因,在 chrome 中,如果没有内容加载到窗口中,在目标窗口中设置名称将起作用,但是一旦加载内容,设置 window.name 不再影响其他窗口的 window.open。