【问题标题】:White Screen Flicker When Switching Pages切换页面时白屏闪烁
【发布时间】:2016-06-10 02:01:34
【问题描述】:

我们有一个 AngularJS 应用程序在本地机器上运行(所有资产都在硬盘上),并且我们在切换页面时似乎很难解决屏幕闪烁问题。

这就是发生的事情,我们的问题在 #3:

1) 用户在主页开始 (http://localhost:9000/#/)

2) 用户点击按钮进入下一页 (http://localhost:9000/#/page2)

3) ** 在加载新页面时,页面大约有 1/2 秒是白色的。 **

4) 页面 2 加载,屏幕上有很多图形。

我们已经尝试过了:

1) 设置背景图片,这还不够快。例如。

body {
  background-image: url("/assets/page2_background.png");
  background-size: 100%;
}

2) 获取上一页(在本例中为主页)以预缓存下一页的背景。例如。在http://localhost:9000/#/:

<img src="assets/page2_background.png" style="display: none">

这些都不够快,我们仍然可以看到白色背景。我们知道我们也可以设置背景颜色,但是没有一种颜色可以使过渡看起来很好(下一页有太多不同的图形和单独的颜色)。

关于如何摆脱页面之间的白屏有什么想法吗?

编辑:

这是我的路线配置。

.config(function ($routeProvider) {
    $routeProvider
      .when('/page2', {
        templateUrl: 'views/page2.html',
        controller: 'Page2Ctrl',
        controllerAs: 'page2'
      })
      .otherwise({
        redirectTo: '/'
      });
  })

【问题讨论】:

  • 你能告诉我们路线配置吗?
  • 好的,已添加
  • 为什么不创建一个包含背景的父路由,并且只为某些 URL 启用它?
  • 请问这是不是您正在制作的某种演示文稿,因此闪烁困扰您?

标签: javascript html css angularjs


【解决方案1】:

有多种方法可以实现,

1- 在路由中使用 Resolve,$routeProviderresolve 属性允许延迟路由更改,直到加载数据。

.config(function ($routeProvider) {
    $routeProvider
      .when('/page2', {
        templateUrl: 'views/page2.html',
        controller: 'Page2Ctrl',
        controllerAs: 'page2', 
        resolve: {
            myData: function($q, $http){ 
                var deferred = $q.defer();

                // USE it to load data and delay page transition.
                return deferred.promise;
            }
        }
      })
      .otherwise({
        redirectTo: '/'
      });
  })

2 - 使用ngCloak 使用一个简单的标签来显示页面加载图标,并在其后放置 ng-clock。 ngCloack 将隐藏上面标记之后的所有内容,直到页面完全加载。

<div ng-app="">

<p ng-cloak> // Your normal HTML page</p>

</div>

请参阅此示例here

复制自here

【讨论】:

  • 我认为这两种方式必须一起使用
  • 不幸的是,我尝试缓存背景,采用 ngCloak 以及 $routeProvider 中的 resolve 参数,但我第一次更改视图时仍然加载缓慢(请参阅codepen.io/beaver71/pen/reavpR
  • codepen.io/anon/pen/wGaPQK 用 ngclock 之外的一个额外标签更新了这个,它可以快速加载。而且我尝试了多次,至少对我来说没有闪烁。
猜你喜欢
  • 2014-09-29
  • 2020-05-11
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
相关资源
最近更新 更多