5

我在Javascript中使用getCurrentPosition方法。我想實現一個按鈕,當點擊它時停止執行方法「getCurrentPosition」。我試圖用throw/try/catch塊,但它似乎沒有工作:停止執行getCurrentPosition方法

 

    try { 
     $('#cancel').on("click", function() { 
      $.mobile.loading('hide'); 
      throw "stop"; 
     }); 
     navigator.geolocation.getCurrentPosition(foundLocation, noLocation, {enableHighAccuracy: true, timeout : 30000 }); 
    } 
    catch (er) { alert(er); return false; } 

任何想法?在JS中甚至可能嗎? 我有一個想法,但我不知道是否有可能用JS方法觸發超時,以便getCurrentPosition打破?

+0

這應該是一個異步方法,所以不應該停止渲染或任何東西,但W3規範沒有讓你停止啓動一次。如果按鈕被點擊,你只是想忽略結果?你發佈的代碼沒有工作機會,事件和異步方法不能這樣工作。 – mattmanser 2013-04-11 15:16:49

+0

單擊按鈕時,我想停止執行getCurrentPosition(類似於clearTimeout)。 – Laila 2013-04-11 15:20:41

回答

10

解決方法:

方法navigator.geolocation.getCurrentPosition是一個異步功能,所以不要阻止它就是這樣算。

您應該改用其他函數調用:navigator.geolocation.watchPosition。它的工作方式與getCurrentPosition相同,但是在您的案例中使用它的另一個函數是navigator.geolocation.clearWatch並且該函數用於停止watchPosition。

例子:

geoLoc = navigator.geolocation; 
watchID = geoLoc.watchPosition(showLocation, errorHandler, options); 
geoLoc.clearWatch(watchID); 
+0

謝謝先生,這正是我需要的! – Laila 2013-04-11 15:26:30