Как вы закрываете модальное окно от его родителя? - PullRequest
3 голосов
/ 03 сентября 2010

Можно ли закрыть модальное окно от его родителя? Это немного сложно даже попытаться сделать это. По сути, я открываю немодальное окно. Из этого немодального окна пользователь может несколько раз открыть модальное окно. Теперь предположим, что я закрываю немодальное окно ... Я хотел бы, чтобы модальное подокно также закрылось. Как это можно сделать?

По сути, мне нужно найти способ закрыть модальное окно от его родителя.

Спасибо, 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);
        }</p>

<pre><code>    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");</p>

<pre><code>    }
 </script>

Модальное окно - это просто текст.

<code>
    <html>
   Just a sample.
</html>

1 Ответ

2 голосов
/ 03 сентября 2010

Как только вы откроете модальное окно, открыватель замерзнет, ​​и вы не сможете применить какой-либо элемент управления через него!

для получения дополнительной информации взгляните на этот код:

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).

Вывод: Родитель не имеет контроля над модальным окном после открытия, потому что он фактически мертв: - (

...