我有一个打开模式对话框的页面。在对话框上完成操作后,我想刷新打开器页面。但是当我使用“openDialog”打开弹出窗口时,我无法通过在弹出页面上使用 window.opener 来访问开启器。当我想访问时,它显示为“未定义”。(在这种情况下我不想使用“弹出”方法。顺便说一下,我希望它是一个对话框。使用“弹出”是我的第二个计划。)
摆脱这个问题的最佳做法是什么?
我有一个打开模式对话框的页面。在对话框上完成操作后,我想刷新打开器页面。但是当我使用“openDialog”打开弹出窗口时,我无法通过在弹出页面上使用 window.opener 来访问开启器。当我想访问时,它显示为“未定义”。(在这种情况下我不想使用“弹出”方法。顺便说一下,我希望它是一个对话框。使用“弹出”是我的第二个计划。)
摆脱这个问题的最佳做法是什么?
这就是我从链接中得到的
在父级中:
parentVar = "set by parent";
vRv = window.showModalDialog("modalWindow.html",window.self, "");
在模态中:
dialogArguments.parentVar = "set by modal";
PS:不要忘记使用“window.self”设置对开启器的引用
当我使用 Shadowbox 时,我可以访问它。
self.parent.location.reload();
也许这也适用于你。
如果您查看https://developer.mozilla.org/En/DOM/Window.openDialog您会看到您可以通过传递 modal 参数来使对话框成为模态,这样在对话框完成之前它不会返回,届时您可以重新加载父页面。
模态对话框是一个阻塞函数。调用者等到盒子关闭,然后恢复。因此,在调用打开对话框之后在源脚本中进行刷新是一件简单的事情。
例如,假设您有一个带有网格的页面。你有一个添加按钮来打开一个模态对话框,你需要网格刷新自己(或刷新页面,问题是一样的)。
这是打开模态对话框的伪代码,然后刷新网格
替换 grid.Refresh(); 无论您要执行什么操作,它都会在对话框关闭后执行。