Есть ли способ поймать событие, вызванное нажатием кнопки закрытия окна подтверждения геолокации?

В нашем коде есть запрос геолокации к браузеру, и IE показывает всплывающее окно с подтверждением для пользователя, чтобы выбрать опцию. Если пользователь щелкнул крестик [X] в окне, ничего не происходит. Есть ли способ запечатлеть событие??

введите здесь описание изображения


person user1715850    schedule 23.12.2018    source источник
comment
Вы видели это? Может быть полезно. stackoverflow.com/questions/6092400/   -  person Oliver Trampleasure    schedule 23.12.2018


Ответы (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);
person Oliver Trampleasure    schedule 23.12.2018
comment
Спасибо, Оливер, за краткое изложение... Но IE при нажатии на конкретный показанный регион (кнопка X) не выдает никакого ответа. Можно ли что-то сделать по этому поводу. - person user1715850; 24.12.2018
comment
Попробовал ваше решение, и IE не выдает сообщение об ошибке при нажатии кнопки X в правом верхнем углу. - person user1715850; 24.12.2018

на самом деле Оливер имеет в виду, что до того, как вы нажмете кнопку X, вы смогли получить сообщение об ошибке. сообщение об ошибке err get после того, как navigator.geolocation.getCurrentPosition не удалось получить информацию о местоположении. вы можете обнаружить, что окно изменения появилось перед нажатием кнопки X, и вы можете добавить код, если вам не удалось получить местоположение. введите здесь описание изображения

person DevPreSupport_MSFT    schedule 29.12.2018
comment
Спасибо, но на самом деле я не могу понять, что вы обсуждаете. Я попробовал код, и при нажатии на кнопку закрытия IE не выдает никаких ошибок или консоли. Есть ли что-то, что я делаю неправильно. Пожалуйста, наведите пример. С новым годом - person user1715850; 02.01.2019
comment
Событие кнопки X является логическим кодом IE, javascript не может зафиксировать событие. Могу я узнать, почему вы должны запечатлеть это событие? может быть, мы можем помочь попытаться найти какой-то другой обходной путь? - person DevPreSupport_MSFT; 03.01.2019
comment
на самом деле наш сайт проверяет наличие близлежащих веток, и данные заполняются как специфичные для его ветки, когда пользователь не готов поделиться местоположением, которое мы должны обновить с помощью ветки по умолчанию, что невозможно с этой проблемой. Спасибо, добрый день - person user1715850; 14.01.2019

мы получаем это двойное подтверждение того, что IE не поддерживает захват этого события, извините за неудобства, которые могут быть вызваны этим. Между тем, не уверен, что приведенный ниже обходной путь может вам помочь. используйте «a = navigator.geolocation.getCurrentPosition (успех);» вместо «navigator.geolocation.getCurrentPosition(успех, ошибка, параметры);» а затем вручную проверьте, является ли a нулевым значением, если оно равно null, что означает, что клиент не был готов поделиться местоположением. это нормально для вас?

Благодарность

person DevPreSupport_MSFT    schedule 15.01.2019
comment
есть ли что-нибудь еще нужна помощь? - person DevPreSupport_MSFT; 27.01.2019