Navigator.permissions.query: геолокация onChange не работает в Firefox - PullRequest
1 голос
/ 12 марта 2019

Я пытаюсь использовать Permissions API: https://developer.mozilla.org/en-US/docs/Web/API/Permissions/query Который должен поддерживаться Firefox. (В настоящее время я использую Firefox Developer Edition 66.0b14 ).

У меня есть страница, где я первоначально проверяю права пользователей. Что-то вроде;

if (navigator.permissions) {
  navigator.permissions.query({ name: 'geolocation' }).then(result => {
    if (result.state === 'granted') {
      this.getCurrentPosition()
    } else if (result.state === 'prompt') {
      this.getCurrentPosition()
      console.log('Permissions requested. Waiting for user input...')
    } else if (result.state === 'denied') {
      this.locationError = true
    }
    result.onchange = event => {
      if (event.target.state === 'granted') {
        this.locationError = false
        this.getCurrentPosition()
        console.log('Thanks for letting us know...')
      } else if (event.target.state === 'denied') {
        this.locationError = true
      }
    }
  })
}

Теперь все работает нормально в Chrome, например. (Кстати: я использую this.locationError, чтобы показать окно с информацией о том, что приложение будет работать только с включенными службами определения местоположения)

В любом случае, если я открою его в Firefox, я получу приглашение, как и ожидалось: Теперь, если я поставлю галочку «Запомнить это решение» и отправлю «Разрешить / заблокировать», я вижу, что onchange выполняется, как и ожидалось, что дает мне возможность реагировать на решение пользователей.

НО, если я не поставлю галочку в этом поле и просто откажу или разрешу один раз, onchange не вызывается, оставляя меня в неизвестности о том, что на самом деле произошло. Также это состояние остается «быстрым».

Я также попытался установить интервал для проверки разрешений через некоторое время, но снова он просто откроет приглашение с запросом разрешения. Состояние никогда не обновляется и не изменяется с «приглашения» на «отказано» или «предоставлено».

Что-то мне не хватает, или это ошибка Firefox.

Спасибо за любые подсказки

Приветствия

...