【问题标题】:return type of modal dialog box is undefined模态对话框的返回类型未定义
【发布时间】:2010-04-08 10:39:37
【问题描述】:

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

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

【问题讨论】:

  • showModalDialog 是 IE 独有的功能。打开模态对话框后,您将无法单击父窗口。您能否澄清一下您是从父窗口还是从 modalDialog 内打开的页面关闭 modalDialog?
  • @Sunny:我觉得你是对的
  • 大多数其他浏览器现在都支持showModalDialog。但这仍然是一个绝对可怕的功能。避免。

标签: javascript


【解决方案1】:

showModalDialog 是一个阻塞调用。在对话框本身关闭之前,无法对父页面进行其他操作。

因此,即使您在 ShowModalDialog() 之后的下一行调用 javascript,它也不会在对话框实际关闭之前执行...

您将能够从对话框中显示的页面关闭对话框(假设您有权更改显示页面中的代码)。但是在模态对话框关闭之前,父页面上不会执行任何操作。

HTH

【讨论】:

    【解决方案2】:

    这意味着变量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的window变量通常是全局的。所以这应该工作。

    【讨论】:

      【解决方案3】:

      为了阐明 Sunny 的回答 (+1),在 showModalDialog 完成之前,甚至不会分配 Window 变量,而这在对话框窗口关闭之前不会发生。

      无论如何,showModalDialog 不返回窗口对象 — 显然,由于上述原因,这样做毫无意义。它返回对话框本身代码给出的“returnValue”。对话框只能通过对话框内的代码关闭,不需要Window变量,因为它可以使用自己的window全局变量。

      如果您需要与文档外部的对话框进行交互,您需要的不是 modalDialog。

      如果您想要不完全糟糕的用户体验,您想要的不是 modalDialog。

      【讨论】:

      • 这可以通过 javascript 会话实现吗?如果是怎么办?
      • “JavaScript 会话”是什么意思?会话通常是服务器端功能。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      相关资源
      最近更新 更多