2

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

一点背景知识:我正在尝试解决出现在模式对话框中的登录页面的表单身份验证问题,然后是用户登录时网站的其余部分。

有任何想法吗?

4

1 回答 1

6

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

function parentExists(){
     return (window.opener != null)? true : false;
}

当您的登录页面加载时调用它。如果它返回 true,则您处于弹出窗口(或模式)中。然后,您可以关闭页面并重定向父级。

对于模态框来说,这有点棘手,因为您无法访问开启器。首先,确保所有模态框都像这样打开:

window.showModalDialog('test.htm', self, <optional options>);

这将确保某些内容被传递到窗口的争论中。

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

function parentExists()
{
    var opener = window.dialogArguments;
    return (opener == null)?false:true;
}

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

于 2009-05-27T20:17:55.413 回答