Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从中关闭模式窗口';谁的父母?_Javascript_Html_Modal Dialog_Modalpopups_Non Modal - Fatal编程技术网

Javascript 如何从中关闭模式窗口';谁的父母?

Javascript 如何从中关闭模式窗口';谁的父母?,javascript,html,modal-dialog,modalpopups,non-modal,Javascript,Html,Modal Dialog,Modalpopups,Non Modal,是否可以从父窗口关闭模式窗口?要做到这一点有点难。基本上,我正在打开一个非模态窗口。用户有时可能会从该非模式窗口打开一个模式窗口。现在假设我关闭非模态窗口。。。我想模态子窗口也关闭。如何做到这一点 基本上,总的来说,我必须找到一种方法从父窗口关闭模式窗口 谢谢, 格拉 这里有一些代码给你一个示例 起始页 window.childWindow; 函数openNonModal() { window.childWindow=window.open(“nonmodal.html”,“_blank”,“

是否可以从父窗口关闭模式窗口?要做到这一点有点难。基本上,我正在打开一个非模态窗口。用户有时可能会从该非模式窗口打开一个模式窗口。现在假设我关闭非模态窗口。。。我想模态子窗口也关闭。如何做到这一点

基本上,总的来说,我必须找到一种方法从父窗口关闭模式窗口

谢谢, 格拉

这里有一些代码给你一个示例

起始页


window.childWindow;
函数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);
}


    <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>
函数closeChildWindow()
{
window.childWindow.closeChildWindow();
window.childWindow.close();
}

打开模式窗口的非模式窗口


函数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”);
}
函数closeChildWindow()
{
警报(“应关闭子窗口”)

}

模态窗口只是文本


只是一个样本。

一旦打开模式窗口,打开器将冻结,您无法通过它应用任何控制

有关更多说明,请查看此代码:

警报(1)
将在第一秒钟执行

警报(2)
将在下一秒执行,即使您没有确认
警报(1)

在第3秒钟,模式窗口将打开,此时打开器窗口将冻结,因此
警报(3)
将在第4秒钟执行

警报(3)
不会在模式窗口仍然打开时执行,但是关闭模式窗口一秒钟后,
警报(3)
将执行


结论:打开后,家长无法控制模态窗口,因为它实际上已死亡:-(

现在假设我关闭非模式窗口…我希望模式子窗口也关闭。这怎么办?
这不应该是默认行为吗?此时会发生什么-模式窗口实际上是孤立的吗?模式窗口的概念本身就意味着在modal窗口已寻址。编辑:来自Wikipedia:“在用户界面设计中,模式窗口是一个子窗口,要求用户在返回操作父应用程序之前与其交互,从而阻止应用程序主窗口上的工作流。”@Pekka当前的行为是IE不关闭非模态窗口,如果它有一个模态子窗口打开。我的计划是先关闭模态窗口,这样我就可以关闭它的父窗口非模态窗口。@Matthew PK理论上可能不是这样。例如,你打开了两个IE窗口,然后你点击一个链接设置一个模式窗口。模式窗口将阻止IE的该实例,但另一个实例仍然可以自由访问其他链接。@Matthew好吧,这是正确的,但我们在这里讨论的是浏览器如何解释模式窗口,以及它们允许父窗口发生什么。(@Grae我自己也很难在模式子窗口之前关闭父窗口。这是什么浏览器?)

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

    <html>
   Just a sample.
</html>
setTimeout('alert(1);', 1000);
setTimeout('alert(2);', 2000);
setTimeout('window.showModalDialog(...);', 3000);
setTimeout('alert(3);', 4000);