在javascript中检测模态对话框

Zac*_*tes 2 javascript modal-dialog

有没有办法检测何时在模态对话框中加载页面?比如当你调用window.showModalDialog()时.

一点背景:我试图解决模式对话框中出现的登录页面的表单身份验证问题,以及用户登录时的其余部分.

有任何想法吗?

Aar*_*onS 6

对于window.open,您可以检查您当前所在的页面是否有父级.

function parentExists(){
     return (window.opener != null)? true : false;
}
Run Code Online (Sandbox Code Playgroud)

加载登录页面时调用此方法.如果它返回true,则表示您处于弹出窗口(或模态)中.然后,您可以关闭页面并重定向父页面.

对于模态框来说这有点棘手,因为你无法访问开启者.首先,确保所有模态框都打开类似于:

window.showModalDialog('test.htm', self, <optional options>);
Run Code Online (Sandbox Code Playgroud)

这将确保将某些内容传递到窗口的参数中.

现在在您的登录页面上添加以下代码:

function parentExists()
{
    var opener = window.dialogArguments;
    return (opener == null)?false:true;
}
Run Code Online (Sandbox Code Playgroud)

编辑:添加有关模态框的信息