0

Android OS 用の 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>

実際の結果は、アプリケーションが最初に読み込まれるときに、すべてがうまく機能していることです。「こんにちは」というアラートが表示されます。しかし、アプリケーションが再開されると、何も得られません。

4

2 に答える 2

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 は非同期であるため、次のように呼び出しても機能しないことに注意してください。

$(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]);
            }
    });
于 2013-06-10T12:41:17.060 に答える