以下适用于我在 chrome、firefox 中,即(没有测试更多浏览器)
假设 3 个文件
- ( www.mydomain.com/parent.html ) 包含带有链接的“主”文档的页面
- ( bills.mydomain.com/child.html ) 链接将打开的页面
- ( www.mydomain.com/dispatcher.html ) 稍后解释
首先将所有 3 个文档的域属性设置为 mydomain.com
<script>
document.domain="mydomain.com";
</script>
在 parent.html 中创建一个隐藏的 iframe,其名称属性为“hiddenframe”。还要创建一些稍后可能会收到响应的函数。
parent.html 现在应该如下所示:
<script>
document.domain="mydomain.com";
function fx(msg)//receives the response
{
alert(msg)
}
</script>
<iframe name="hiddenframe" style="display:none"></iframe>
<a href="http://bills.mydomain.com/child.html" target="_blank">click</a>
在 child.html 中,您现在可以将文档加载到 parent.html 内的隐藏 iframe 中
<script>
document.domain="mydomain.com";
window.open('http://www.mydomain.com/dispatcher.html','hiddenframe');
</script>
(不要对window.open()
这里的使用感到困惑,这里不会打开新窗口,页面会加载到parent.html中的iframe中)
在 dispatcher.html 中你现在可以调用 parent.html 中的函数
<script>
document.domain="mydomain.com";
parent.fx('you just got some response');
</script>
当您只需要重新加载 parent.html 时,它会更容易一些。
再次在 parent.html 和 child.html 中设置 document.domain-property(您不需要 parent.html 和 dispatcher.html 中的 iframe)
在 parent.html 中还设置窗口的名称属性,例如
<script>
window.name="parentTab";
</script>
在 child.html 中,您现在可以访问 -window parentTab
(tab)
<script>
document.domain="mydomain.com";
window.open('http://www.mydomain.com/parent.html','parentTab');
</script>
...或者简单地使用“parentTarget”作为 child.html 中链接或表单的目标属性