2014-07-17 94 views
0

我正在測試navigator.geolocation.watchPosition方法,並在watchPosition的回調方法中使用一些數據更新p元素的html。在使用各種瀏覽器(Chrome,FireFox,Safari,Phonegap-> iOS)進行測試時,行爲似乎是watchPosition函數被調用一次並且html被正確更新,但是除非我做了一些事情,否則它不會再被調用就像切換到另一個選項卡並返回,最小化瀏覽器並將其重新啓動等等。這是什麼原因造成的?在元素中更新HTML不會失效或刷新頁面

小提琴:http://jsfiddle.net/Y9WP2/

geoLoc.watchPosition(showPosition, 
         errorHandler, 
         options); 
+0

注意:我知道watchPosition應該更新位置更改事件,但我測試了我的iPhone上的rungoals網站和phonegap'd版本,並且看到類似/零星的行爲。 – ferr

+0

另外:我在當前版本中將超時設置爲10000。那不就是說watchPosition不論什麼時候都應該每10秒開火一次? – ferr

+0

請將問題隔離在這裏發佈代碼或撥打小提琴。 –

回答

-1

運行一次代碼,取而代之的,將其轉換爲一個函數,並觸發它作爲一個事件。

function updateLocation() 
{ 
    if (navigator.geolocation) { 

     var options = { enableHighAccuracy: true, timeout: 10000 }; 
     geoLoc = navigator.geolocation; 
     geoLoc.watchPosition(showPosition, 
           errorHandler, 
           options); 
     x.innerHTML = "Updating..."; 
    } else { 
     x.innerHTML = "Geolocation is not supported by this browser."; 
    } 
} 
setInterval(function(){updateLocation()},10000); 
+1

Geolocation.watchPosition()方法用於註冊一個處理函數,每當設備的位置發生變化時,將自動調用該函數。 – ferr

+0

我不能說那個。也許他應該實現一個do while while循環? – XaxD

+0

@ferr http://stackoverflow.com/a/10612332/2623144 – XaxD