Где обратный вызов «без действия» для navigator.geolocation.getCurrentPosition? - PullRequest
2 голосов
/ 23 марта 2012

Когда вы запрашиваете у браузера разрешение на доступ к текущей позиции, каков наилучший способ определить, проигнорировал ли пользователь приглашение браузера или выбрал опцию «Не сейчас»?

Тайм-аут не срабатывает в этом случае.

if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
        currentLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
        callback();
    }, function() {
        currentLocation = default_location;
        callback();
    },{timeout: 5000});
}

Решение, которое я использую сейчас, заключается в использовании местоположения по умолчанию для currentLocation и обновлении страницы / просмотра в любое время, когда один из обратных вызовов запускается из-за того, что пользователь отвечает на запрос браузера.

1 Ответ

3 голосов
/ 29 марта 2012

Указанный вами 5-секундный тайм-аут не начинается до тех пор, пока пользователь не предпримет действие, согласно HTML5 геолокации спец.

Обратите внимание, что затраченное времяполучение разрешения пользователя не входит в период, охватываемый атрибутом timeout.Атрибут timeout применяется только к операции получения местоположения.

Вторая функция обратного вызова должна срабатывать, как только пользователь нажимает «отклонить» в своем браузере, но ничего не будет запущено, если пользователь игнорируетподскажите и пусть сядет.Традиционная реализация предполагает, что пользователь не имеет возможностей геолокации и не будет щелкать по приглашению, используя его скорее как расширение, чем как обязательную функцию.

Кроме того, вы можете создать страницу, которая поможет пользователям действовать, бросая темный div, маскируя всю страницу текстом «Нажмите здесь».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...