返回类型的模态对话框未定义

时间:2010-04-08 10:39:37

标签: javascript

我正在使用模态对话框打开模态对话框。 这是代码

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未定义 因此无法关闭窗户。 请给我解决方案。

3 个答案:

答案 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。