2013-02-13 35 views
13

Tôi muốn ẩn() hoặc hiển thị() nút cho phép người dùng sử dụng vị trí hiện tại của họ dựa trên việc họ có đang sử dụng vị trí của mình hay không cài đặt trình duyệt. mã bên dưới chỉ kiểm tra xem trình duyệt có hỗ trợ định vị địa lý và không cho dù người dùng cụ thể có cho phép hay không.kiểm tra xem cài đặt vị trí đã bị tắt trong trình duyệt của người dùng

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

Có giá trị boolean mà tôi có thể phát hiện cho cài đặt trình duyệt của họ cho tôi biết liệu vị trí hiện có được phép không?

cảm ơn mọi đề xuất.

Trả lời

18

Bạn đã đọc http://www.w3schools.com/html/html5_geolocation.asp

Những gì bạn muốn làm là kiểm tra lỗi để xem họ có cho phép hay từ chối các yêu cầu.

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 –

4

Mã dưới đây sẽ cho phép bạn kiểm tra tình trạng cho phép mà không cần viện dẫn yêu cầu navigator.geolocation phép trên Chrome 43+ và Firefox 46+

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

Đây là Reference Link

+0

còn các trình duyệt khác như IE/Safari/Opera thì sao? –

+0

Hiện tại, tính năng này không được hỗ trợ trong các trình duyệt đó. Tôi đang cập nhật câu trả lời bằng liên kết tham chiếu. –

Các vấn đề liên quan