2012-07-23 36 views
3

我使用以下代碼來訪問黑莓設備的地理位置。它的工作和展示慾望的結果。但我想訪問這個函數體外的window.GlobalVar。我如何訪問它?請幫忙。javascript中的全局變量獲取地理位置

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

最好的問候,

+0

請參閱http://stackoverflow.com/questions/7809690/global-values-return-to-original-values-after-ajax-jquery – 2012-07-23 09:51:21

回答

7

window.GlobalVar將在您的功能之外訪問。

這裏可能是錯誤的是你試圖在它被設置之前訪問它,因爲它被設置在回調函數中。

getCurrentPosition提示用戶輸入座標,但它不是阻塞呼叫,即它不會簡單地停止所有代碼執行並等待用戶做出決定。

這意味着你做頁面加載過程中不設置window.GlobalVar,你要求它在頁面加載,並且每當用戶決定您設置。因此,無論您撥打getCurrentPosition,您都無法確定在給定的時間點,window.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 
} 
+0

我將它設置爲onload,並嘗試在頁面末尾訪問它。 – 2012-07-23 10:35:18

+0

@asifhameed:不,你沒有設置它,你*要求它的onload。如果用戶選擇不分享它,那麼當你得到它的時候就失去了控制,並且你可能永遠不會得到它。在頁面末尾,它很可能不會被設置,因爲頁面末尾的腳本將在站點呈現時立即執行,並且在用戶有機會對請求做出反應之前執行。看到我更新的答案。 – 2012-07-23 10:42:54

1

設置window.gps = gps後調用window.gps應該足夠,因爲它有,因爲你將其附屬於window全局範圍。注意JS是異步的,即gps在您調用時可能沒有定義。

+0

我設置我的全局變量的onload,並試圖訪問它在頁面的末尾。 – 2012-07-23 10:34:44