我正在使用以下代码从我的主页面打开一个弹出窗口:
<a href="http://external.domain.tld/"
onclick="window.open(this.href, '_blank',
'width=512,height=512,left=200,top=100');return false">
Open popup
</a>
这个功能可以正常工作,但我的问题是,在弹出窗口中加载的文档有权限更改打开者窗口的位置。即使弹出窗口中的文档来自不同的域,这也是有效的。它没有读取位置的权限,但允许更改位置。我不希望如此。我希望弹出窗口与我的主页面完全断开连接。
即使没有JavaScript,它也无法正常工作。当我使用target="_blank"
属性在新标签页中打开其他页面时,该标签页仍然被允许导航到opener
窗口并更改其位置:
<a href="http://external.domain.tld/" target="_blank">
Open in new tab
</a>
这是在打开的文档中不应该被允许的代码:
<script>
opener.location.href = "http://badsite.tld/";
</script>
您可以在这里查看实时演示。点击其中一个链接,以在弹出窗口或新标签页中打开另一个页面,然后在启动器窗口中加载第三个页面。这就是我想要防止的。
有没有什么技巧可以用来断开启动器窗口和已打开窗口之间的连接?理想情况下,已打开窗口应该完全不知道它是由任何其他窗口打开的。