我有一個應用程序試圖從瀏覽器獲取位置設置,這往往需要一段時間,所以我希望它在頁面加載時運行。但是,如果您在位置回調運行之前單擊提交按鈕,則沒有位置數據。我的問題很簡單,如何在提交表單之前等待我的位置成功回調完成? (沒有什麼愚蠢的睡眠聲明)。
理想情況下,我想閃爍繁忙的指示燈並等待數據。這可能嗎?我有代碼來使繁忙的指標可見,但我不知道如何優雅地等待數據可用。延遲表單提交,直到檢索到位置
$(document).ready(function(){
var lat = "";
var lng = "";
var accuracy = "";
var locationFound = false;
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(function positionSuccess(loc){
lat = loc.coords.latitude;
lng = loc.coords.longitude;
accuracy = loc.coords.accuracy;
locationFound = true;
});
}else{
alert("I'm sorry, your jerk browser doesn't support geolocation");
locationFound = true;
}
$('#locForm').submit(function(e){
$('#lat').val(lat);
$('#lng').val(lng);
$('#boundary').val($('#boundary-select').val());
}
我覺得這是一個很好的回退,但我寧願啓用按鈕,點擊按鈕,而不是具有後引入的延遲按鈕在頁面加載時禁用了一段時間。 – rooftop