繁体   English   中英

测试当前页面是否在暗盒中? (所以我可以关闭阴影框并在主窗口中重新打开该页面)

[英]Test if current page is inside a shadowbox? (so i can close the shadowbox and reopen that page in the main window)

我的站点中有几个页面在shadowbox窗口而不是主窗口中打开。 我的问题是,如果用户会话过期,那么用户单击在影子框中打开的链接之一,它们将被重定向到我不需要的登录到“影子框”内的页面。 我一直在尝试解决此问题的最佳方法-我想到的一种方法,似乎有点笨拙,是在登录页面上测试我们是否在暗盒中,然后关闭它并将父窗口重定向到登录页面。

a)这似乎是一个明智的计划吗? 我在登录页面上添加了以下内容,该页面可以正常工作:

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

但我必须等待阴影框完成页面加载,然后重定向。 这样就可以了,但是就像我说的有点笨拙。 有更好的方法吗?

感谢您的任何建议-最大

我知道这篇文章很旧,但是最近我不得不面对同样的挑战,并认为可能有人在这篇文章上寻找答案。

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

这是我所做的:

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

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

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

使用isOpen()

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

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

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

var Shadowbox = window.parent.Shadowbox;

然后检查Shadowbox是否未定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM