通常当使用window.open打开一个窗口时,我可以使用window.opener()来访问调用者窗口,是否可以在模态对话框(window.showModalDialog)中进行类似操作?
答案 0 :(得分:4)
您可以在MSDN页面的comment上阅读showModalDialog
(感谢Pekka),
[t]他
window.opener
方法返回null
,而不是对...的引用 打开窗口。所以你无法刷新 打开窗口window.opener.location.refresh()
(例如,如果您使用showModalDialog
打开编辑 对话)。如果你想做的就是 每次刷新打开的窗口ModalDialog
关闭,这很容易 (包括window.location.refresh()
在电话会议结束后showModalDialog
)。但如果你只是 想要刷新打开的窗口 某些情况(例如,开放 窗口需要一段时间来刷新),你 通过传递一个可以做到这一点dialogArgument
。更聪明(我认为)的方式是 将窗口引用本身作为
dialogArgument
传递。在里面 调用窗口,使用window.showModalDialog('newurl.asp', window)
。在被叫对话框中 使用var window_opener = window.dialogArguments
检索引用。您可以使用 存储的窗口引用 变量window_opener
代替window.opener
,刷新 从被调用的对话框中调用窗口。请注意Firefox和Chrome(适用于 例)似乎没有这些 限制,并似乎对待
ModalDialogs
更像常规 视窗。如果你这样做,请记住这一点 使用其中一种浏览器进行测试 但打算你的申请工作 所有浏览器。