0

我们的网站使用showModalDialog. 根据对话框中的操作,我们可能希望也可能不希望重新加载打开对话框的页面。我们通过将对话框 JavaScript 设置window.returnValuetrueor来做到这一点false,然后底层页面在调用的返回值中检查它showModalDialog

当对话文档和底层页面从同一个源域加载时,这可以正常工作。与 Web 一样,当对话框的域与页面的域不匹配时,返回值showModalDialog始终是undefined.

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

有没有更好的方法让我们让对话与跨域打开页面进行通信,而无需重新加载它们?

4

1 回答 1

0

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

于 2011-12-28T21:56:27.800 回答