最近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 );
});