Chrome浏览器未在新标签

时间:2016-11-04 15:55:27

标签: google-chrome backbone.js requirejs rendering

最近Chrome版本似乎开始发生这种情况。我有一个非常标准的Backbone应用程序,带有一个可以在全局视图控制器上激活功能的路由器。最近,如果您在新选项卡中打开应用程序链接,那么在您刷新之前,应用程序很可能永远不会呈现。我假设Chrome为非活动标签添加了额外的资源减少,这导致了这一点,但我不确定。我也不确定如何解决这个问题。它是一个很大的应用程序,但是它已经打包好了需要和缓存,因此在推送新版本之前它不会重新加载。如果您已经下载了最新的版本,它通常会在不到一秒的时间内加载和渲染。

有没有人知道这里会发生什么?

在进行一些调试之后,似乎Require app永远不会初始化,因为window.onload永远不会在父需求应用程序脚本中触发:

window.onload = function(){
  require([
    'backbone',
    'builds/app',
    'builds/company/company.router',
    'builds/company/company.hash.redirect',
  ], function( Backbone, App, Router, HashRedirect ){
    App.initializeApp( Router, HashRedirect );
  });
};

这是我的页面正文加载了需要的应用。我使用一些服务器配置来加载构建的应用程序或开发应用程序,但问题出在两者上

<body>
  <div id="app" class="app"></div>

  <!-- Load App -->
  <script>
    window.require = {
      waitSeconds: 0
    };
  </script>
  <?php if (App::environment() === 'production' || Config::get('app.production_builds') === TRUE) { ?>
    <script data-main="/apps/company.production.js?bust=<?= Config::get('app.version') ?>" src="/js/libraries/require/require.min.js"></script>
  <?php } else { ?>
    <script data-main="/apps/builds/company/company.develop.js?bust=<?= \Config::get('app.version') ?>" src="/js/libraries/require/require.dev.js"></script>
  <?php } ?>
</body>

从上面的初始需要关闭中删除window.onload函数包装器修复了问题

require([
  'backbone',
  'builds/app',
  'builds/company/company.router',
  'builds/company/company.hash.redirect',
], function( Backbone, App, Router, HashRedirect ){
  App.initialize();
  App.initializeApp( Router, HashRedirect );
});

0 个答案:

没有答案