3

次のコードを使用して、ブラックベリー デバイスの位置情報にアクセスしています。その働きと欲望の結果を示しています。しかし、この関数の本体の外側にある window.GlobalVar にアクセスしたいです。どうすればアクセスできますか? 助けてください。

 navigator.geolocation.getCurrentPosition(function(position) {  
  var gps = (position.coords.latitude+position.coords.longitude);  
  window.GlobalVar = gps;
  alert (window.GlobalVar);
});

よろしくお願いします、

4

2 に答える 2

7

window.GlobalVar関数の外部からアクセスできます。

ここでおそらく間違っているのは、コールバック関数で設定されていることを確認して、設定される前にアクセスしようとしていることです。

getCurrentPositionユーザーに座標の入力を求めますが、これはブロッキング呼び出しではありません。つまり、すべてのコードの実行を停止して、ユーザーが決定を下すのを待つだけではありません。

これは、ページの読み込み中に設定せず、ページの読み込み中にリクエストし、ユーザーが決定するたびに設定することを意味します。したがって、どこに電話をかけても、特定の時点でが設定されるかどうかはわかりません。window.GlobalVargetCurrentPositionwindow.GlobalVar

実行しているスクリプトでそれが設定されていることを確認したい場合は、変数が設定されたwindow.GlobalVarにスクリプトを実行していることを確認する必要があります。

navigator.geolocation.getCurrentPosition(function(position) {  
  var gps = (position.coords.latitude+position.coords.longitude);  
  window.GlobalVar = gps;

  continueSomeProcess();
});

function continueSomeProcess() {
   // this code will be able to access window.GlobalVar
}
于 2012-07-23T09:45:01.920 に答える
1

window.gpsにアタッチしたため、グローバルスコープがあるため、設定後に呼び出すwindow.gps = gpsだけで十分ですwindow。JS は非同期であることに注意してください。つまり、gps呼び出し時に定義されていない可能性があります。

于 2012-07-23T09:43:49.970 に答える