通过javascript更新多个窗口
Update multiple windows via javascript
我的站点设置了超时,因此在活动 15 分钟后,会出现一个登录屏幕,要求您刷新会话。
这很好用,但是如果您在网站上打开了多个窗口,则意味着一个页面将使用登录详细信息刷新,但另一个页面不会。
所以问题是,有没有办法在站点打开的每个窗口上执行以下代码?
$jq('#loginbox').hide()
感谢您的任何帮助。 我还应该声明,其他窗口不会通过JavaScript打开,用户可能只是在新窗口/链接选项卡上单击打开
你无法访问你没有用JS打开的窗口。
每个窗口都应检测到它已超时并显示登录对话框。如果用户在窗口 A 中登录,则窗口 B 应轮询服务器以检测是否已创建会话,并在这种情况下自行恢复。
在切换到刷新屏幕(弹出窗口?)之前,您可以简单地对服务器进行 ajax 调用以查看用户上次刷新的时间 - 如果用户仍然合法登录,只需将计时器重置为正确的时间。
如果另一个窗口不是通过 JavaScript 打开的,您将无法以编程方式访问它。换句话说,原始窗口将无法在另一个窗口上调用 JavaScript 函数。
但是,如果窗口具有相同的域(如果它们位于同一网站上),则可以共享 Cookie。因此,一种可能性是让另一个窗口轮询会话 cookie 的更新,原始窗口可以写入该窗口。一旦会话 cookie 获得特定值,另一个窗口就可以检测到此更改并按照您认为合适的方式做出反应。
感谢所有发布想法的人,我选择了以下解决方案,如果有人可以增强它并发布代码,那么我会接受它作为答案:
$jq(function(){
$jq(window).bind('blur', function(){checkloginrefreshed();});
$jq(window).bind('focus', function(){checkloginrefreshed();});
$jq(document).bind('focusout', function(){checkloginrefreshed();});
$jq(document).bind('focusin', function(){checkloginrefreshed();});
});
function createCookie(name,value,hours) {
if (hours) {
var date = new Date();
date.setTime(date.getTime()+(hours*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
function checkloginrefreshed(){
if (parseInt(readCookie("loginset")) == 1){
eraseCookie("loginset");
$jq('#timeoutwarning').dialog("close");
$jq('#timeoutwarning').html(TIMEOUTLOGINFORM);
clearTimeout(timer);
clearTimeout(timerWarning);
setupTimers();
}
}
相关文章:
- Javascript更新孙窗口中的表单元素
- ngDialog-弹出窗口未更新范围变量
- javascript skrollr基于动态内容更新窗口高度
- 更新打开的谷歌地图信息窗口
- CKEditor从子窗口更新父文本区域
- 更新面板和模式窗口
- 画布粒子-在“窗口大小”上更新画布大小
- 如何更新jQuery Mobile全局弹出窗口的位置
- 如何在客户端的元窗口小部件(JavaScript)中获取和显示更新的域模型
- 在jQuery中:如何在用户展开窗口时更新函数
- 调整窗口大小时更新数据属性
- Chrome应用程序:如何更新在Chrome应用程序主窗口中创建的辅助窗口元素的内容
- 更新窗口哈希(位于url)
- 父窗口如何打开2个子窗口(“childA”和“childB”),然后让childA更新childB中的内容
- PHP 中的弹出窗口更新
- 角度 - 从子窗口更新父$scope
- PHP 在关闭窗口更新数据库
- 在Google Chrome中,父窗口的详细信息不会从子窗口更新
- 为什么在JavaScript中父窗口对象由子窗口更新
- 选择表格单元格并通过弹出窗口更新该特定单元格