Ruby on rails 测试当前页面是否在阴影框内?(这样我就可以关闭阴影框并在主窗口中重新打开该页面)

Ruby on rails 测试当前页面是否在阴影框内?(这样我就可以关闭阴影框并在主窗口中重新打开该页面),ruby-on-rails,shadowbox,Ruby On Rails,Shadowbox,我的站点中有几个页面是在阴影框窗口而不是主窗口中打开的。我的问题是,如果用户会话过期,然后用户单击在shadowbox中打开的一个链接,它们将被重定向到shadowbox中的登录页面,这是我不想要的。我一直在想最好的方法来处理这个问题-我想到的一种方法,看起来有点笨拙tbh,就是在登录页面上测试我们是否在阴影框中,然后关闭它并将父窗口重定向到登录页面 a) 这似乎是一个明智的计划吗?我在我的登录页面中添加了以下内容: $(document).ready(function(){ if(

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

a) 这似乎是一个明智的计划吗?我在我的登录页面中添加了以下内容:

  $(document).ready(function(){
    if(window.parent.location != window.location){
      window.parent.location.href = window.location;
    }
  }
但我必须等待阴影盒完成加载页面,然后重定向。这是可行的,但就像我说的,有点笨拙。有更好的方法吗

感谢您的建议-max

使用
isOpen()


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

在登录页面上尝试以下操作:

var Shadowbox=window.parent.Shadowbox


然后检查Shadowbox是否未定义。

我知道这篇文章很旧,但最近我不得不面对同样的挑战,我想可能会有其他人在这篇文章上寻找答案

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

以下是我所做的:

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

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

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

谢谢Kalyan,但这只在“家长”窗口中起作用。当你在暗箱中加载的页面中调用它时,它不起作用。谢谢。这和我在上面代码中使用的“window.parent.location”实际上是一样的吗?