我正在使用模态对话框打开模态对话框。 这是代码
var Window;
function PopDis()
{
Window=window.showModalDialog('/collector/modalBox.jsp', '', 'dialogHeight:300px; dialogWidth:500px;scroll:no; status:no; help:no; center:yes; resizable:no');
}
在另一个功能中,我想关闭模态对话框。 代码是
function CloseModalDialog()
{
alert("in fun close"+Window);
Window.close();
}
但var Window未定义 因此无法关闭窗户。 请给我解决方案。
答案 0 :(得分:1)
showModalDialog是一个阻止调用。在对话框本身关闭之前,父页面上不能进行任何其他操作。
所以,即使你在ShowModalDialog()之后的下一行调用了一个javascript,它也不会被执行,直到对话框实际关闭...
您将能够从对话框中显示的页面关闭对话框(假设您可以控制更改显示的页面中的代码)。但是在模态对话框关闭之前,父页面上不会有任何内容。
HTH
答案 1 :(得分:0)
这意味着变量Window
超出范围。
在不知道其余代码的情况下,一种快速修复方法就是使用window变量。像这样:
function PopDis()
{
window.win = window.showModalDialog('/collector/modalBox.jsp', 'win', 'dialogHeight:300px; dialogWidth:500px;scroll:no; status:no; help:no; center:yes; resizable:no');
}
在另一个可以访问窗口的地方(浏览器窗口,而不是模态窗口):
function CloseModalDialog()
{
alert("in fun close"+win);
window.win.close();
window.win = undefined;
}
但这并不漂亮,大多数人不建议使用它。
编辑:浏览器javascript的窗口变量通常是全局的。所以这个应该工作。
答案 2 :(得分:0)
为了阐明Sunny的答案(+1),Window
变量在showModalDialog
完成之前甚至不会被分配,直到对话窗口关闭才会发生。
在任何情况下,showModalDialog
都不会返回窗口对象 - 显然,由于上述原因,这样做是没有意义的。它返回对话框本身代码给出的“returnValue”。该对话框只能通过对话框内的代码关闭,该代码不需要Window
变量,因为它只能使用自己的window
全局变量。
如果您需要与文档外部的对话框进行交互,那么您想要的不是modalDialog。
如果你想要一个并不完全糟糕的用户体验,你想要的不是modalDialog。