Ответ 1
См. править ниже
Вы правы, обработчик ошибок должен срабатывать, когда пользователь отклоняет запрос местоположения. Объект ошибки, переданный в обработчик ошибок, должен содержать код ошибки и сообщение, сообщающее, что пользователь отклонил запрос. Однако я не вижу этого в FF4 при выборе опции Not Now
в диалоговом окне запроса местоположения.
В Chrome API/обратные вызовы работают точно так, как ожидалось, но в Chrome нет третьего варианта.
РЕДАКТИРОВАТЬ
Ahhh хорошо, я нашел немного причуды в поведении этого в FF4. В обычном режиме (не для частного просмотра) пользователю будут представлены 3 варианта:
- Всегда делиться
- Никогда не сообщайте
- Не сейчас
Never share
корректно запускает обработчик ошибок, но Not Now
нет.
Что это значит и как его обрабатывать?
Ну, похоже, если пользователь нажимает Not Now
, вы не получите ответа. Поэтому я бы установил тайм-аут, который проверяет флаг, который будет установлен одним из обработчиков. Если этот флаг не установлен (что означает, что обработчики не срабатывали в течение отведенного времени), вы можете сделать одну из двух вещей:
- Предположим, что пользователь отклонил запрос (хотя отказ был временным)
- Вы можете снова запросить у пользователя разрешение (через тот же вызов), и пользователь снова будет представлен диалоговым окном.
Вариант 2, вероятно, является плохим юзабилити (и раздражает), поэтому, вероятно, лучше предположить, что они временно отказали и попросят их снова (вежливо!) в следующий раз, когда они посещают сайт.
Я создал JsFiddle, чтобы поиграть с этим API: