3

親からモーダルウィンドウを閉じることは可能ですか? これをしようとするのも少し難しいです。基本的に、非モーダルウィンドウを開いています。その非モーダル ウィンドウから、ユーザーはモーダル ウィンドウを開くことがあります。ここで、非モーダル ウィンドウを閉じるとします...モーダル サブウィンドウも閉じたいと思います。これはどのように行うことができますか?

基本的に、全体として、親からモーダル ウィンドウを閉じる方法を見つける必要があります。

ありがとう、グレイ

サンプルを提供するコードを次に示します。

スタートページ


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

モーダル ウィンドウを開く非モーダル ウィンドウ。


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

モーダルなウィンドウは単なるテキストです。


    <html>
   Just a sample.
</html>

4

1 に答える 1

2

モーダル ウィンドウを開くとすぐに、オープナーがフリーズし、それを介してコントロールを適用できなくなります。

より明確にするために、このコードを見てください:

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

alert(1)最初の 1 秒で実行されます。

alert(2)を確認しなくても次の秒で実行されますalert(1)

3 秒目にモーダル ウィンドウが開かれ、この時点でオープナー ウィンドウがフリーズするため、4 秒目には実行されalert(3)ません。

alert(3)モーダル ウィンドウがまだ開いているときは実行されませんが、モーダル ウィンドウを閉じてから 1 秒後alert(3)に実行されます。

結論: 開いた後、親はモーダル ウィンドウを制御できません。実際には死んでいるからです :-(

于 2010-09-03T18:22:34.547 に答える