我如何等待Cordova和jQuery加载他们的库?

kbu*_*ach 4 javascript jquery javascript-events cordova

jQuery具有"就绪"功能:

$(function() {...});
Run Code Online (Sandbox Code Playgroud)

并且cordova文档说要添加一个事件监听器:

document.addEventListener("deviceready", onDeviceReady, false();
function onDeviceReady(){...}
Run Code Online (Sandbox Code Playgroud)

我是否需要调用这两个以确保在使用任何引用它们的代码之前加载这两个库?

嵌套它们是否有意义,即:

$(function(){
    onDeviceReady(){...}
}
Run Code Online (Sandbox Code Playgroud)

只是想弄清楚这样做的最好方法,也许我正在过度思考它

tom*_*a32 7

JS文件按顺序加载.所以在你的HTML中只需将你的.js文件放在jQuery和cordova之后,它们都不会在加载之前运行.

<script src="jQuery"></script>
<script src="cordova"></script>
<script src="yourScript"></script> <!-- this won't run before both jQ and cordova are loaded -->
Run Code Online (Sandbox Code Playgroud)

对于就绪事件,如果您不想嵌套它们,您可以在所有库都准备就绪时构建自己的事件:

var listener = {
    jquery: false,
    cordova: false,
    fire: function(e) {listener[e] = true; if (listener.jquery && listener.cordova) go();
};
document.addEventListener("deviceready", function(){listener.fire('cordova'), false();
$(document).ready(function(listener.fire('jquery')){});

function go() {
// your code here
}
Run Code Online (Sandbox Code Playgroud)

这将是有效的,并且go()将在所有加载时触发,但是我真的不确定你是否真的需要所有这些并且有一个更简单的方法来做到这一点.