使用跨源文档获取showModalDialog结果

时间:2011-12-20 18:20:25

标签: javascript cross-domain showmodaldialog

我们的网站使用showModalDialog。根据对话框中的内容,我们可能希望重新加载打开对话框的页面,也可能不希望重新加载。我们通过将对话框JavaScript window.returnValue设置为truefalse来执行此操作,然后基础页面检查调用showModalDialog的返回值。

当从同一原始域加载对话框文档和基础页面时,这可以正常工作。与网络一样,当对话框的域与页面不匹配时,showModalDialog的返回值始终为undefined

我已经通过不同的方式将标记从对话框传递到底层窗口。幸运的是,我们定位的浏览器都支持postMessage,但对话框JavaScript似乎没有为window.opener获取值,所以我认为它不能获得对窗口的引用所以它可以发布消息。使用我们的代码库实现iframe workaround like this是不可行的,因为它要求我们在多个站点上安装iframe收件人文档,这些文档都可以打开同一个对话框。

我们是否有更好的方法让对话框与跨源的开放页面进行通信,而无需重新加载?

1 个答案:

答案 0 :(得分:0)

我可能找到了自己的答案。根据我的理解,如果我将开启者文档和对话框文档的document.domain属性设置为相同的值,我应该能够访问此信息。由于两者都在同一根域名的子域内,因此它应该有效。如果我尝试这个并且它有效,我会接受这个答案。