你如何从它的父母关闭一个模态窗口?

时间:2010-09-03 15:36:18

标签: javascript html modal-dialog modalpopups non-modal

是否可以从它的父级关闭模态窗口?尝试这样做有点困难。基本上,我打开一个非模态窗口。从那个非模态窗口,用户可能有时会打开一个模态窗口。现在假设我关闭非模态窗口...我希望模态子窗口也关闭。怎么办呢?

基本上,总的来说,我必须找到一种方法来关闭它父母的模态窗口。

谢谢, GRAE

以下是一些代码,可以为您提供示例。

起始页


    <html>
   <head>
     <script>
        window.childWindow;
        function openNonModal()
        {
           window.childWindow = window.open("nonmodal.html","_blank", "dialogWidth=500px;dialogHeight=294px;scroll=no;status=no;caption=no;titlebar=no;menubar=no;toolbar=no;help=no");
           setTimeout("closeChildWindow()",5000);
        }

    function closeChildWindow()
    {
       window.childWindow.closeChildWindow();
       window.childWindow.close();
    }
 <script>

</head> <input type="button" value="openNonModal" onclick="openNonModal(); return false;"/> </html>

打开模态窗口的非模态窗口。

    function closeChildWindow()
    {
       window.childWindow.closeChildWindow();
       window.childWindow.close();
    }
 <script>

模态窗口只是文本。


    <html>
   <head>
     <script>
        function openModal()
        {
           var retVal = window.showModalDialog("modal.html","_blank", "dialogWidth=500px;dialogHeight=294px;scroll=no;status=no;caption=no;titlebar=no;menubar=no;toolbar=no;help=no");
        }
        function closeChildWindow()
        {
           alert("should close child window");

    }
 </script>

</head> <input type="button" value="openModal" onclick="openModal(); return false;"/> </html>

1 个答案:

答案 0 :(得分:2)

一旦打开模态窗口,开启者就会冻结,你无法通过它进行任何控制!

有关详细说明,请查看此代码:

setTimeout('alert(1);', 1000);
setTimeout('alert(2);', 2000);
setTimeout('window.showModalDialog(...);', 3000);
setTimeout('alert(3);', 4000);

alert(1)将在第一秒执行。

即使您未确认alert(2)

alert(1)也会在下一秒执行。

在第3秒,模态窗口将被打开,此时开启窗口冻结,所以alert(3) 将在第4秒执行。

当模态窗口仍处于打开状态时,

alert(3)不会执行,但在关闭模态窗口后一秒alert(3)将被执行。

结论:父母在打开后无法控制模态窗口,因为它实际上已经死了: - (