angularjs – 当状态在未激活时更改时,Firefox无法正确更新页面

栏目: 编程语言 · AngularJS · 发布时间: 7年前

内容简介:翻译自:https://stackoverflow.com/questions/38066906/firefox-doesnt-update-the-page-correctly-when-state-changed-when-not-active

我们有一个角度应用程序(SPA),它维护客户端用户会话(会话超时,不活动时间等).会话用于强制用户在会话因某种原因到期时重新登录.

会话的到期由专用服务控制,该服务在会话终止,锁定或以其他方式更改状态时在$rootScope上广播事件.

我们将侦听器添加到那些会将路由更改为相关页面(登录页面,解锁页面等)的会话状态更改事件.

我们使用angular-ui-router进行路由.

这种方法很好,但是,特别是在Firefox中,如果在浏览器窗口/选项卡未激活(即最小化,在后台等)时会发生会话状态更改,则页面不会正确刷新.换句话说,您可以看到新页面的控件(例如用户名文本字段和密码字段),但不会看到新页面的背景,而是看到旧页面的背景.

它在Chrome和IE中完美运行,我们只在Firefox上看到这个问题.此外,当浏览器窗口/选项卡处于活动状态时,它也可以在Firefox上完美运行.

有什么想法吗 ?

让它成为另一种方式.

不要使用rootScope广播,只需使用当前状态获取服务中的var,然后返回具有此值的函数.

var userSession = 'Expired';

return {
   getSessionState: function () {
      return userSession;
   }
}

并在你的控制器中观看它.因此,第一个摘要运行会将视图切换为您现在需要的视图.

$scope.$watch(function () {
    return yourServiceName.getSessionState()
}, function (val) {
   //you can check the val here and change the route
});

如果这没有帮助,请确保使用$timeout(使用摘要的Angulars本机超时)并且没有任何设置超时(当浏览器窗口/选项卡未激活时停止JS超时,并且当选项卡处于焦点时立即触发全部超时再一次,什么可以最终在Angular中出现奇怪的行为).

翻译自:https://stackoverflow.com/questions/38066906/firefox-doesnt-update-the-page-correctly-when-state-changed-when-not-active


以上所述就是小编给大家介绍的《angularjs – 当状态在未激活时更改时,Firefox无法正确更新页面》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

浅薄

浅薄

[美] 尼古拉斯·卡尔 / 刘纯毅 / 中信出版社 / 2010-12 / 42.00元

《浅薄:互联网如何毒化了我们的大脑》在我们跟计算机越来越密不可分的过程中,我们越来越多的人生体验通过电脑屏幕上闪烁摇曳、虚无缥缈的符号完成,最大的危险就是我们即将开始丧失我们的人性,牺牲人之所以区别于机器的本质属性。——尼古拉斯•卡尔“谷歌在把我们变傻吗?”当尼古拉斯•卡尔在发表于《大西洋月刊》上赫赫有名的那篇封面文章中提出这个问题的时候,他就开启了人们热切渴望的期盼源泉,让人急于弄清楚互联网是在......一起来看看 《浅薄》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换