在呈现页面后调用window.showModalDialog完成

时间:2015-09-15 10:40:51

标签: javascript c# asp.net

我在我的网络应用程序中使用window.showModalDialog。当我点击提交按钮时,我从服务器端调用此javascript。以下是我的代码。

window.showModalDialog(URL, 'popUpWindow', 'dialogHeight:250px, dialogWidth:420px,scrollbars=No,toolbar=no,menubar=no,location=no,directories=no, status=yes, modal=yes');

现在的问题是,当模态弹出窗口出现在我的父页面时,即在后台,它会显示我的页面仍在加载。我无法点击除showModalDialog之外的任何其他控件。我希望后台页面完成其活动,然后打开对话框,否则我们可以允许在showModalDialog开启时我们可以在父页面上工作。?

1 个答案:

答案 0 :(得分:0)

您应该使用Document.readyState。也许是这样的:

if(document.readyState === "complete") {
    window.showModalDialog(URL, 'popUpWindow', 'dialogHeight:250px, dialogWidth:420px,scrollbars=No,toolbar=no,menubar=no,location=no,directories=no, status=yes, modal=yes');
}

文档的readyState可以是以下之一:

<强>装载

文档仍在加载。

<强>交互式

文档已完成加载并且文档已被解析,但子资源(如图像,样式表和框架)仍在加载。状态表示DOMContentLoaded事件已被触发。

<强>完整

文档和所有子资源已完成加载。状态表示已触发load事件。

或者可以向readystatechange事件添加一个事件监听器,如下所示:

document.addEventListener("readystatechange", function(){
    if(document.readyState === "complete") {
        window.showModalDialog(URL, 'popUpWindow', 'dialogHeight:250px, dialogWidth:420px,scrollbars=No,toolbar=no,menubar=no,location=no,directories=no, status=yes, modal=yes');
    }

});