我有两个网络应用程序设置:
david .example.com和 john .example.com
大卫给约翰开了一个新窗口:
window.open('john.example.com');
John现在想在David上设置一个输入元素:
$("#input", window.opener.document).val("Hello David.");
我的问题是,由于跨域脚本安全性,这在大多数现代浏览器上都不起作用。我也尝试将document.domain
设置为David和John的不同域名组合,但没有成功。
唯一可行的方法是John在example.com
,并且document.domain
都设置为example.com
。但是,example.com
是我们的主要网站,无法作为解决方案提供。
有没有办法在上述示例中使解决方案适用于所有现代安全意识的浏览器?
注释
example.com
及其所有子域。 答案 0 :(得分:8)
只要在两个DOM上都设置document.domain,就可以这样做。
document.domain = location.host.replace(/^.*?([^.]+\.[^.]+)$/g,'$1');
归功于Martin Jespersen
答案 1 :(得分:-1)
您始终可以使用iframe进行跨域通信,并通过hashbangs发送消息。有关示例,请参阅this。这基本上就像Facebook连接这样的东西。如果一个应用程序打开另一个窗口,我猜你也可以用普通的窗口做到这一点。