[英]using window.open with window.name
浏览器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。
如上面的注释中所建议的,为了使用window.open方法按名称定位窗口,目标窗口必须具有相同的原点并且具有通用的打开器。
镀铬测试:
window.name = 'target'
window.was_open = true
w = window.open('', 'target')
w.was_open //undefined
不知道为什么在窗口控制台中执行js而无需先加载内容(例如example.com)时,同样的测试为什么会起作用。
不能从多个来源或具有不同打开器的窗口中定位一个公用窗口。 例如,bookmarklet不能使用window.open将postMessage()
发送到公共窗口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.