通常在页面加载期间使用require.js加载Backbone App
<script data-main="js/main" src="js/libs/require/require.js"></script>
加载一些依赖项,并启动应用程序。
如果您的应用需要操作DOM,您可以使用domReady插件
require(['domReady','app' ], function (domReady, App) {
domReady(function (App) {
App.Initialize()
}):
});
但我的应用程序与Flash API通信。我需要等到flash插件完成加载它自己的xml。完成后,我将回调一个回调到javascript。此回调需要使用依赖项触发app.initialize(),如require.js
第一种方法和第二种方法(等待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>
flash插件可以调用window.init()来启动应用程序。不足之处就是当应用程序初始化时,jQuery会加载。在显示内容之前,这可能会导致一个小的延迟。
我想,当我在主体的头部/末尾加载jquery时,require.js将重新加载/实例化另一个jquery副本,或从cache / dom读取
答案 0 :(得分:1)
您可以利用requirejs shim config,这将允许您为指定的require模块定义“导出”。此导出将是缓存在全局上下文中的值,并且可用作要使用的回调函数:
<script data-main="js/main" src="js/libs/require/require.js"></script>
<script type="text/javascript">
requirejs.config({
shim: {
'framework/app': {
exports: 'App'
}
}
});
require(['framework/app'], function(App){});
</script>
从这里,您回调javascript函数的代码只需调用:
App.initialize();
答案 1 :(得分:0)
我对浏览器中的Flash知之甚少(实际上是什么),但如果有办法用JavaScript检测Flash已加载:
然后,您可以创建一个检查此条件的JavaScript函数(例如,每1秒),并在验证检查后初始化应用程序。使用setInterval(function, time)
创建此功能。确保在加载应用程序后清除间隔,以确保它不会再次加载。