[英]How do I close a popup window, and open the next page in the main window in ROR?
[英]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.