我的网站中有几个页面在阴影框窗口而不是主窗口中打开。我的问题是,如果用户会话到期,然后用户点击在影子框中打开的其中一个链接,他们将被重定向到登录页面INSIDE THE SHADOWBOX,这是我不想要的。我一直在努力想办法处理这个问题 - 我想到的一种方式,看起来有点笨拙,在登录页面上测试我们是否在影子箱中,如果我们关闭它并将父窗口重定向到登录页面。
a)这看起来像是一个明智的计划吗?我将以下内容添加到我的登录页面,该页面有效:
$(document).ready(function(){
if(window.parent.location != window.location){
window.parent.location.href = window.location;
}
}
但是我必须等待shadowbox完成加载页面然后重定向。所以它有效,但我说有点笨拙。有更好的方式吗?
感谢任何建议 - 最多
答案 0 :(得分:1)
我知道这篇文章已经过时了,但最近我不得不解决同样的挑战,并认为其他人可能会在这篇文章中找到答案。
上面给出的答案很棒,但是不能很好地回答原来的问题,这不是真的“如何检查页面是否在影子箱中?”,但是“如何避免页面加载? shadowbox然后在影子盒关闭后再次加载?“
这是我做的:
检查活动会话的代码转发到注销页面,该页面清除任何剩余的会话值并将用户发送到登录页面。我将以下代码添加到onload函数的注销页面中:
if (window.parent) {
window.parent.location.replace('your-login-url');
} else {
window.location.replace('your-login-url');
}
现在,当调用注销页面时,它会在浏览器获得任何登录页面视图之前清除影子框。效果很好。希望这可以帮助别人。
答案 1 :(得分:0)
使用isOpen()
。
http://www.shadowbox-js.com/api.html
如果要访问shadowbox内的浏览器位置,请尝试this.link.baseURI
查看是否与window.location
相同。
答案 2 :(得分:0)
在登录页面上尝试此操作:
var Shadowbox = window.parent.Shadowbox;
然后检查Shadowbox是否未定义。