2013-02-13 80 views
13

我想隱藏()或顯示()允許用戶使用其當前位置的按鈕,這取決於他們當前是否允許在他們的位置使用位置瀏覽器設置。 下面的代碼只會檢查瀏覽器是否支持地理位置,而不會檢查特定用戶是否允許。檢查用戶瀏覽器中的位置設置是否已關閉

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(showPosition); 
    } else { 
x.innerHTML="Geolocation is not supported by this browser.";} 
} 

是否有一個布爾值,我可以檢測他們的瀏覽器設置,讓我知道如果位置目前允許?

感謝您的任何建議。

回答

18

你讀過http://www.w3schools.com/html/html5_geolocation.asp

你想要做的是檢查錯誤,看看他們是否允許,或拒絕該請求。

function getLocation() { 
    if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(showPosition,showError); 
    } else { 
    x.innerHTML = "Geolocation is not supported by this browser."; 
    } 
} 

function showPosition(position) { 
    x.innerHTML = "Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude;  
} 

function showError(error) { 
    switch(error.code) { 
    case error.PERMISSION_DENIED: 
     x.innerHTML = "User denied the request for Geolocation." 
     break; 
    case error.POSITION_UNAVAILABLE: 
     x.innerHTML = "Location information is unavailable." 
     break; 
    case error.TIMEOUT: 
     x.innerHTML = "The request to get user location timed out." 
     break; 
    case error.UNKNOWN_ERROR: 
     x.innerHTML = "An unknown error occurred." 
     break; 
    } 
} 
+2

https://開頭developer.mozilla.org/en-US/docs/Using_geolocation – 2013-02-13 20:04:28

4

下面的代碼可以讓你檢查許可狀態,而不調用Chrome上navigator.geolocation許可請求43+和Firefox 46+

navigator.permissions && navigator.permissions.query({name: 'geolocation'}).then(function(PermissionStatus) { 
    if(PermissionStatus.state == 'granted'){ 
      //allowed 
    }else{ 
     //denied 
    } 
}) 

這裏是Reference Link

+0

其他瀏覽器如IE/Safari/Opera怎麼樣? – 2017-10-27 08:42:22

+0

截至目前,在這些瀏覽器中不支持它。我正在用參考鏈接更新答案。 – 2017-10-27 14:28:08

相關問題