2012-03-23 22 views
2

當要求瀏覽器訪問當前位置的權限時,確定用戶是忽略瀏覽器提示還是選擇了「現在不是」選項的最佳方法是什麼?navigator.geolocation.getCurrentPosition的「無動作」回調在哪裏?

對於這種情況,超時似乎不起作用。

if(navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function(position) { 
     currentLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
     callback(); 
    }, function() { 
     currentLocation = default_location; 
     callback(); 
    },{timeout: 5000}); 
} 

我現在使用一種解決方案是使用默認位置currentLocation並刷新頁面/視圖隨時隨地回調之一是由於用戶回答瀏覽器提示解僱。

回答

3

您指定的5秒超時在用戶根據HTML5 geolocation規範採取行動之後纔會啓動。

請注意,獲取用戶權限所花費的時間不包括在超時屬性所涵蓋的時間段內。超時屬性僅適用於位置獲取操作。

第二個回調函數應該在用戶點擊瀏覽器中的「拒絕」時觸發,但如果用戶忽略提示並讓它坐下,則不會觸發任何操作。傳統的實現方式是假定用戶沒有地理定位功能,並且不會點擊提示,而是將其用作增強功能而不是所需功能。

或者,您可以設計頁面以幫助指導用戶採取行動,並用「點擊此處」文本投射黑暗的div來遮蓋整個頁面。

相關問題