我们的网站使用showModalDialog
。根据对话框中的内容,我们可能希望重新加载打开对话框的页面,也可能不希望重新加载。我们通过将对话框JavaScript window.returnValue
设置为true
或false
来执行此操作,然后基础页面检查调用showModalDialog
的返回值。
当从同一原始域加载对话框文档和基础页面时,这可以正常工作。与网络一样,当对话框的域与页面不匹配时,showModalDialog
的返回值始终为undefined
。
我已经通过不同的方式将标记从对话框传递到底层窗口。幸运的是,我们定位的浏览器都支持postMessage
,但对话框JavaScript似乎没有为window.opener
获取值,所以我认为它不能获得对窗口的引用所以它可以发布消息。使用我们的代码库实现iframe workaround like this是不可行的,因为它要求我们在多个站点上安装iframe收件人文档,这些文档都可以打开同一个对话框。
我们是否有更好的方法让对话框与跨源的开放页面进行通信,而无需重新加载?
答案 0 :(得分:0)
我可能找到了自己的答案。根据我的理解,如果我将开启者文档和对话框文档的document.domain
属性设置为相同的值,我应该能够访问此信息。由于两者都在同一根域名的子域内,因此它应该有效。如果我尝试这个并且它有效,我会接受这个答案。