通过Javascript访问父窗口(当子窗口的URL在另一台服务器上时)

时间:2011-02-03 16:22:57

标签: javascript

我知道ajax不能跨服务器。

所以我试图只是访问我的父窗口,就像改变它的位置一样。因此,当子页面位于同一服务器上时,它可以工作,但当它位于另一台服务器上时,它不起作用。

例如:

parenttest.html:

点击此处

childtest.html

opener.document.location = “http://www.cnn.com”;

因此,当childtest在同一台服务器上但在另一台服务器上时,它不起作用。为什么我甚至无法访问弹出窗口的打开窗口?

感谢

2 个答案:

答案 0 :(得分:1)

Same origin policy不会让它发生。

答案 1 :(得分:1)

我找不到像你提到的那样运行代码的方法(服务器在服务器b上打开一个弹出窗口,然后让弹出窗口改变开启者的位置)。但是,我用iframe尝试了同样的事情。加载谷歌并试图改变它cnn.com。当我使用

时,它允许我
window.frames.myframe.location = 'http://www.cnn.com'

当我尝试

时,它无法正常工作
window.frames.myframe.document.location = 'http://www.cnn.com'

尝试从您的对帐单中删除文档。也许你可以对来自不同领域的窗口做一些事情。我知道你至少可以测试window.closed

尝试一下:http://jsfiddle.net/HrWer/

新测试

我从wikipedia.com开始,输入网址框:

javascript: open('http://www.google.com');void(0)

在打开的窗口中,我在URL框中输入以下语句

javascript: alert(opener.closed) //false, it works

javascript: alert(opener.location.href) //undefined, access denied

javascript: opener.document.location = 'http://www.google.com'; void(0); // Didn't change the location, access denied

javascript: opener.location = 'http://www.google.com'; void(0); // YES, it changed

我认为这几乎证实了我的理论,但我只是用铬测试过。