我知道ajax不能跨服务器。
所以我试图只是访问我的父窗口,就像改变它的位置一样。因此,当子页面位于同一服务器上时,它可以工作,但当它位于另一台服务器上时,它不起作用。
例如:
parenttest.html:
点击此处
childtest.html
opener.document.location = “http://www.cnn.com”;
因此,当childtest在同一台服务器上但在另一台服务器上时,它不起作用。为什么我甚至无法访问弹出窗口的打开窗口?
感谢
答案 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
我认为这几乎证实了我的理论,但我只是用铬测试过。