В нашем коде есть запрос геолокации к браузеру, и IE показывает всплывающее окно с подтверждением для пользователя, чтобы выбрать опцию. Если пользователь щелкнул крестик [X] в окне, ничего не происходит. Есть ли способ запечатлеть событие??
Есть ли способ поймать событие, вызванное нажатием кнопки закрытия окна подтверждения геолокации?
Ответы (3)
Сценарий ниже запускается при загрузке страницы и просит пользователя использовать свое местоположение. Я просто добавил небольшой фрагмент кода из примера документации для проверки кода ошибки — код ошибки 1 означает отказ в доступе..
Существует несколько причин, по которым разрешение может быть отклонено, например, в фрагментах кода здесь был возвращен код ошибки 1, но из-за переполнения стека, запрещающего функцию геолокации политикой, аналогично JSFiddle.
Вместо этого вы можете использовать сообщение об ошибке, которое выглядит более точным. В разных браузерах сообщения об ошибках немного отличаются:
- «Пользователь отказался от геолокации» (Safari и Chrome)
- «Пользователь отклонил запрос геолокации» (Firefox).
Вместо этого вы можете использовать следующую проверку сообщения об ошибке, а не кода:
if ( err.message == "User denied Geolocation" || err.message == "User denied geolocation prompt" ) {
// Your code goes here
}
Пример Javascript
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
function success(pos) {
var crd = pos.coords;
console.log('Your current position is:');
console.log(`Latitude : ${crd.latitude}`);
console.log(`Longitude: ${crd.longitude}`);
console.log(`More or less ${crd.accuracy} meters.`);
}
function error(err) {
// Check for permission denied error
if (err.code == 1) {
alert("Permission denied to use location");
// Add your code here
}
console.warn(`ERROR(${err.code}): ${err.message}`);
}
navigator.geolocation.getCurrentPosition(success, error, options);
на самом деле Оливер имеет в виду, что до того, как вы нажмете кнопку X, вы смогли получить сообщение об ошибке. сообщение об ошибке err get после того, как navigator.geolocation.getCurrentPosition не удалось получить информацию о местоположении. вы можете обнаружить, что окно изменения появилось перед нажатием кнопки X, и вы можете добавить код, если вам не удалось получить местоположение.
мы получаем это двойное подтверждение того, что IE не поддерживает захват этого события, извините за неудобства, которые могут быть вызваны этим. Между тем, не уверен, что приведенный ниже обходной путь может вам помочь. используйте «a = navigator.geolocation.getCurrentPosition (успех);» вместо «navigator.geolocation.getCurrentPosition(успех, ошибка, параметры);» а затем вручную проверьте, является ли a нулевым значением, если оно равно null, что означает, что клиент не был готов поделиться местоположением. это нормально для вас?
Благодарность