JavaScript - 加载脚本顺序

时间:2013-06-10 11:41:42

标签: javascript jquery getscript

我正在为Android操作系统开发HTML + JavaScript应用程序。在HTML页面中,我正在加载另一个具有以下代码的JS文件:

var Map = {};
$.getScript("cordova-2.6.0.js",function(){
Map['x'] = somthin
}

在HTML页面上,我循环遍历地图。问题是,在我的应用程序第一次加载时,一切运行良好。但是当我打开其他应用程序或者只是回去然后我恢复我的应用程序时,地图的长度等于零。 (我认为它与HTML页面加载其依赖关系的顺序有关,但我不知道如何解决这个问题....)
有什么建议?谢谢!

修改
My JSFile.js中的我的JS代码:

var Map = {};
   $.getScript("cordova-2.6.0.js",function(){
        Map['X'] = 'hi';
  });

HTML页面中的我的JS代码:

<head>
<script src="JSFile.js"></script>
</head>
<body>



$(document).ready(function(){

        for(var i in Map)
        {
            alert(Map[i]);
        }
});
</body>

实际结果是,在第一次加载应用程序时,一切运行良好 - 我正在发出警报&#34;嗨&#34;。但是当应用程序恢复时 - 我什么都没得到。

2 个答案:

答案 0 :(得分:1)

将JSFile.js中的代码放到$(document).ready函数中,如下所示:

var Map = {};
$(document).ready(function(){
   $.getScript("cordova-2.6.0.js",function(){
        Map['X'] = 'hi';
        for(var i in Map)
        {
            alert(Map[i]);
        }
  });
});

请记住$ .getScript是asyn,所以如果你这样调用它,它将不起作用:

$(document).ready(function(){
    var Map = {};
       $.getScript("cordova-2.6.0.js",function(){
            Map['X'] = 'hi';
      });
    //Will not work because the response may not arrive yet
    for(var i in Map)
            {
                alert(Map[i]);
            }
    });

答案 1 :(得分:0)

在页面的onload事件中添加该代码。因此,当该页面通过加载事件时将调用此代码