Я пытаюсь использовать 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.
Спасибо за любые подсказки
Приветствия