2011-09-30 62 views
4

我目前使用Modernizr來檢測是否支持特定設備的地理定位。但是,如果支持地理位置,但我想要顯示更具體的錯誤消息,但用戶已禁用其設備的位置服務。有沒有辦法來檢測移動設備是否具有啓用JavaScript的位置服務?

我收到投訴,稱地理位置在支持的瀏覽器上無效,實際上只是用戶未啓用他們的瀏覽器。

我知道有些方法可以使用本地移動代碼來檢測這種情況,但是有沒有辦法用JavaScript來做到這一點? Modernizr支持這個嗎?

回答

5

你的error callback有沒有火?如果您沒有,請嘗試添加一個。如果它永遠不會觸發,則可以在函數上設置一個超時,如果它在一定時間內沒有獲得許可,則顯示通知。

由於errorCallback在從未啓用geo的情況下從未觸發,因此要在將在另一個函數上創建settimeout的函數創建一個包裝。如果api中的任何一個回調都會觸發,則在觸發之前移除settimeout。

var timeOutId; 
function disabledGeoHandler(){...} 
function show_map() { 
    clearTimeout(timOutId); 
    ... 
} 
function show_map_error() { 
    clearTimeout(timOutId); 
    ... 
} 
function lookup_location() { 
    timeOutId = setTimeout(disabledGeoHandler, 1000); 
    navigator.geolocation.getCurrentPosition(show_map, show_map_error); 
} 

事實上,你可以只使用geo.js

+0

錯誤回調不火。但是,只有當設備不支持地理位置時纔會觸發,而不是在設備支持地理位置時觸發,但是針對該特定設備禁用。我想知道這是否是JavaScript無法訪問的東西? –

+0

我會研究這個。謝謝! –

相關問題