是否可以从它的父级关闭模态窗口?尝试这样做有点困难。基本上,我打开一个非模态窗口。从那个非模态窗口,用户可能有时会打开一个模态窗口。现在假设我关闭非模态窗口...我希望模态子窗口也关闭。怎么办呢?
基本上,总的来说,我必须找到一种方法来关闭它父母的模态窗口。
谢谢, 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>
答案 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)
将被执行。
结论:父母在打开后无法控制模态窗口,因为它实际上已经死了: - (