如何在外部回调后在require.js内初始化主干应用程序

Jar*_*ish 7 javascript requirejs backbone.js

通常,您在页面加载期间使用require.js加载Backbone App

<script data-main="js/main" src="js/libs/require/require.js"></script>
Run Code Online (Sandbox Code Playgroud)

它会加载一些依赖项,并启动应用程序.

如果您的应用需要操作DOM,则可以使用domReady插件

require(['domReady','app' ], function (domReady, App) {
  domReady(function (App) {
     App.Initialize()
  }):
});
Run Code Online (Sandbox Code Playgroud)

但我的应用程序与Flash API通信.我需要等到flash插件完成加载它自己的xml.完成后,我将回调一个回调到javascript.此回调需要使用require.js中的依赖项触发app.initialize()

第一种方法和第二种方法(等待dom)不能确保flash api可用.那么如何初始化应用程序,以便app.js具有依赖性并且flash api可用.或者以不同的方式表达:如何通过javascript事件/回调初始化require.js

更新: 显然,这就足够了:

<script data-main="js/main" src="js/libs/require/require.js"></script>
<script type="text/javascript">
    function init(){
        require(['framework/app'], function(App){
          App.initialize();
        });
    }       
</script>
Run Code Online (Sandbox Code Playgroud)

Flash插件可以调用window.init()来启动应用程序.不足之处就是当应用程序初始化时,jQuery会加载.在东西显示之前,这可能导致一个小的延迟.

我想,当我在主体的头部/末端加载jquery时,require.js会重新加载/实例化另一个jquery副本,或者从cache/dom读取

Oma*_*bid 0

我对浏览器中的 Flash 了解不多(实际上一无所知),但如果有一种方法可以使用 JavaScript 检测 Flash 已加载:

  1. 让 Flash 更改 JavaScript 全局变量
  2. 让Flash为某些元素添加属性

然后,您可以创建一个 JavaScript 函数来检查此条件(例如,每 1 秒一次),并在检查验证后初始化应用程序。用于setInterval(function, time)创建此函数。请确保在加载应用程序后清除间隔,以确保它不会再次加载。