浏览器window.open方法提供了一种按名称访问打开窗口的方法。例如,
window.open('','myWindowName')
这将打开一个带有window.name =='myWindowName'的空白窗口B.然后,
window.open('http://example.com', 'myWindowName')
这将在窗口B中打开example.com。
如何创建一个名为=='myWindowName'的新窗口,如何设置已打开窗口的名称,以便其他窗口可以使用window.open访问它?使用Chrome时,以下操作无效:
<!DOCTYPE html>
<html>
<head>
<script>window.name='myWindowName'</script>
</head>
<body>
target window
</body>
</html>
在目标窗口中执行window.name现在会生成'myWindowName'
window.open('http://example.com', 'myWindowName')
上面的代码在一个新窗口(也是window.name'myWindowName')中打开example.com而不是目标窗口。
由于某种原因,在chrome中,如果没有内容加载到窗口中,在目标窗口中设置名称将起作用,但是一旦加载了内容,设置window.name就不再影响其他窗口的window.open。
答案 0 :(得分:0)
正如上面的评论中所建议的,为了使用window.open方法按名称定位窗口,目标窗口必须具有相同的原点并且具有共同的开启者。
chrome test:
window.name = 'target'
window.was_open = true
w = window.open('', 'target')
w.was_open //undefined
不知道为什么当在窗口控制台中执行js而不先加载内容时(例如example.com),同样的测试工作原理。
无法从多个来源或具有不同开场白的窗口定位常用窗口。例如,window.open不能被小书签用于postMessage()
到公共窗口。