0

我的网站中有几个页面在 shadowbox 窗口而不是主窗口中打开。我的问题是,如果用户会话过期,则用户单击在影子框中打开的链接之一,他们将被重定向到影子框中的登录页面,这是我不想要的。我一直在想最好的方法来处理这个问题——我想到的一种方法,这似乎有点笨拙,是在登录页面上测试我们是否在一个影子盒中,然后我们是否关闭它并将父窗口重定向到登录页面。

a) 这看起来是一个明智的计划吗?我将以下内容添加到我的登录页面,该页面有效:

  $(document).ready(function(){
    if(window.parent.location != window.location){
      window.parent.location.href = window.location;
    }
  }

但我必须等待 shadowbox 完成页面加载然后重定向。所以它有效,但就像我说的有点笨拙。有没有更好的方法?

感谢任何建议 - 最大

4

3 回答 3

1

我知道这篇文章很旧,但我最近不得不解决同样的挑战,并认为其他人可能会在这篇文章中寻找答案。

上面给出的答案很好,但不能很好地回答原始问题,这并不是真正的“如何检查页面是否在影子框中?”,而是“如何避免页面在影子框中加载,然后关闭影子盒后再次加载?”

这是我所做的:

检查活动会话的代码转发到注销页面,该页面清除所有剩余的会话值并将用户发送到登录页面。我在 onload 函数中将以下代码添加到注销页面:

if (window.parent) {
    window.parent.location.replace('your-login-url');
} else {
    window.location.replace('your-login-url');
}

现在,当调用注销页面时,它会在浏览器获得任何登录页面视图之前清除影子框。效果很好。希望这可以帮助某人。

于 2011-04-07T20:26:40.990 回答
0

在登录页面上试试这个:

var Shadowbox = window.parent.Shadowbox;

然后检查 Shadowbox 是否未定义。

于 2010-09-07T22:29:41.737 回答
0

使用isOpen().

http://www.shadowbox-js.com/api.html

尝试this.link.baseURI查看这是否与window.location您要访问阴影框内的浏览器位置相同。

于 2010-05-26T12:38:50.183 回答