我们的网站使用showModalDialog
. 根据对话框中的操作,我们可能希望也可能不希望重新加载打开对话框的页面。我们通过将对话框 JavaScript 设置window.returnValue
为true
or来做到这一点false
,然后底层页面在调用的返回值中检查它showModalDialog
。
当对话文档和底层页面从同一个源域加载时,这可以正常工作。与 Web 一样,当对话框的域与页面的域不匹配时,返回值showModalDialog
始终是undefined
.
我已经以不同的方式将标志从对话框传递到底层窗口。幸运的是,我们的目标浏览器都支持postMessage
,但是对话框 JavaScript 似乎没有获得 的值window.opener
,所以我认为它不能获得对窗口的引用,因此它可以发布消息。使用我们的代码库实现这样的iframe 解决方法是不可行的,因为它需要我们在多个站点上安装 iframe 收件人文档,这些站点都可以打开同一个对话框。
有没有更好的方法让我们让对话与跨域打开页面进行通信,而无需重新加载它们?