@e-hot

Браузерное popup о геолокации клиента — можно ли его редактировать?

Приветствую всех. Нужна ваша помощь.

Ситуация: есть веб-проект на https, в котором приходится реагировать на браузерный запрос о разрешении/запрете определения местоположения в форме диалогового popup-окна. В связи с этим:

Вопросы:
1. Реально ли программно в данное popup-окно внести текстовые изменения - например изменить фразировку запроса и/или добавить еще текст. Или подобный функционал редактируется только разработчиками браузеров, т.к. создается ими же?

2. Можно ли средствами javascript поймать событие вывода этого popup-окна? Не уже нажатие пользователем на "разрешить" или "запретить", а именно момент инициирования popup-окна. Событие, скорее всего - это загрузка страницы ( полная готовность документа ) и наличие защищенного протокола или здесь используются какие-то другие механизмы? Если кто сталкивался или глубоко изучал, подскажите - где что можно прочитать на эту тему.

3. Можно ли средствами javascript поймать событие нажатия на кнопках "разрешить" и "блокировать" в этом popup-окне?

4. Вопрос по работе javascript navigator.geolocation:
когда делается проверка if( navigator.geolocation ){ true; }else{ false; }, true означает, что в браузере разрешено, т.е. не блокировано определение местоположения и false, соответственно, - блокировано, т.е. не разрешено изначальными настройками пользователем в браузере? Или false означает что-то другое, типа, просто не работает по каким-то причинам. Если я правильно понимаю, то if( navigator.geolocation ) соответствует 2-ум из 3-ех вариантов в настройках браузера: принудительное разрешение и принудительная блокировка, а 3-ий вариант как раз выводится в форме popup-окна.
Примечание к вопросу 4: а когда popup-окно закрыто через х без выбора "разрешить" или "блокировать" - что происходит? И еще: пока popup-окно не закрыто и нет нажатия на "разрешить" или "блокировать", а javascript код на сайте, например, пытается получить координаты, то что в этом случае возвращает if( navigator.geolocation ) ?

Если нужны какие уточнения по вопросам - пишите - конкретизирую.

Заранее спасибо.
  • Вопрос задан
  • 670 просмотров
Пригласить эксперта
Ответы на вопрос 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
1. Нельзя, это часть интерфейса браузера.

2. Попап выводится в тот момент, когда вы из своего кода вызываете Geolocation.getCurrentPosition() или Geolocation.watchPosition(), если данная страница еще не получила разрешение/отказ.

3. В вышеупомянутые методы вы передаете два коллбека, на успех и на ошибку. Определить, какую кнопку юзер нажал можно только косвенно исходя из результата.

Дело в том, что спецификация определяет только API, доступное программисту из JS, а как это выглядит со стороны пользователя -- личные фантазии браузерописателей. Где-то попап, где-то галочки в настройках, где-то надо с бубном сплясать. Поэтому никаких гарантий про кнопки дать нельзя.

4. Если navigator.geolocation является falsy, значит у пользователя не поддерживается геолокация (например, старый браузер или еще что-то).

В общем-то вариант только один: честно и прозрачно объяснить пользователю, зачем вашей странице нужна геолокация, и уметь работать без нее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы