如何从父窗口关闭模态对话框?

时间:2014-03-19 12:28:12

标签: javascript jquery html modal-dialog

如何使用JavaScript或jQuery在一段时间后或session到期时从主页关闭模式对话框?

使用以下代码打开对话框:

var result = window.showModalDialog("test.aspx" ... );

当计数器到期时,必须关闭对话框:

 function Discount() {
     leftSeconds = leftSeconds - 1;
     try { document.getElementById('tbLeft').value = leftSeconds; } catch (ex) { }
     if (leftSeconds <= 5) {
          clearTimeout(t);
          // code for closing modal dialog(s)

     } else {
          t = setTimeout("Discount()", 1000);
     }
 }

模态对话框可以自己关闭,但在我的情况下它不是解决方案。

1 个答案:

答案 0 :(得分:1)

当模态对话框打开时,主页面上的javascript执行被停止,因为它正在等待返回值(即使你可能不想返回一个,或者对它返回的内容做任何事情)。

您可以使用这个小例子来检查。单击该按钮时,页面将打开,计时器将停止更新。关闭页面时,将恢复执行:

<!DOCTYPE html>
<html>
<head>
    <script>
        var t = 0;
        function count() {
            document.getElementById('div').innerHTML = ++t;
        }
        var timer = setInterval(count, 1000);
    </script>
</head>
<body>
    <div id='div'></div>
    <button onclick="window.showModalDialog('http://www.google.es');">Open window</button>
</body>
</html>

因此,如果要自动关闭窗口,则需要从新文档本身执行此操作。我的建议?在模态页面的window.load事件中实现您的计时器,以便它可以在所需时间后自行关闭。

window.onload = function() {
    setTimeout(function() { window.close(); }, 60000); //close window after 1 minute.
};