navigator.geolocation.getCurrentPosition Обратные вызовы не будут работать в Firefox 10 - PullRequest
15 голосов
/ 09 февраля 2012

Я создаю приложение, которое использует Geolocation API. Кажется, я не могу получить очень простой кусок кода для работы на Firefox 10. Вот код:

    window.onload = function() {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(function(position) {
                alert('it works');
            }, function(error) {
                alert('Error occurred. Error code: ' + error.code);         
            });
        }else{
            alert('no geolocation support');
        }
    };

Так, например, в chrome, после запуска страницы, меня спросят, хочу ли я поделиться своим местоположением, и после нажатия кнопки «Да» он сообщит мне «это работает». Теперь в Firefox 10 меня попросят поделиться своим местоположением, и после нажатия кнопки «Поделиться» ничего не происходит ... Я пытался получить обратный вызов для запуска любого типа кода, но безуспешно. Это ошибка в Firefox или я что-то не так делаю? У меня есть пример кода здесь для тестирования: http://dev -hub.com / geolocation.html .

Редактировать --- Моя ОС - Windows 7 64bit

Ответы [ 2 ]

19 голосов
/ 09 февраля 2012

Хорошо, я обнаружил, что проблема действительно в Firefox и что он не работает надежно или одинаково на всех платформах.Глядя на http://dev.w3.org/geo/api/spec-source.html, я нашел следующую опцию для добавления:

    window.onload = function() {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(function(position) {
                alert('it works');
            }, function(error) {
                alert('Error occurred. Error code: ' + error.code);         
            },{timeout:5000});
        }else{
            alert('no geolocation support');
        }
    };

Как вы можете видеть здесь, время ожидания: 5000 было добавлено, что означает, что если по какой-то причине браузеру требуется более 5000 мс(5 секунд), затем выдайте ошибку тайм-аута (это код ошибки 3).Так что теперь, когда Firefox не работает, он, по крайней мере, запускает обратный вызов ошибки, и я получаю предупреждение «Произошла ошибка. Код ошибки: 3».

Очевидно, что значение тайм-аута по умолчанию бесконечно, поэтому оно никогда не прекращается ... Chrome на 100% надежен, но Firefox на моей машине примерно на 10%, что очень разочаровывает.На моем другом компьютере, работающем под управлением Windows XP и находящимся в той же сети, Firefox кажется надежным на 100%.

0 голосов
/ 14 февраля 2014

Я сделал этот пример для вас:

if(!navigator.geolocation){
alert('El Navegador no soporta GeoLocalización');
}

function doGeo( position ) 
{
    var coords = position.coords.latitude + '+' + position.coords.longitude;
    var url = 'https://maps.google.es/?q=' + coords;
    $( "#lat" ).html("Latitud: " + position.coords.latitude );
    $( "#lon" ).html("Longitud: " + position.coords.longitude );
    $( "#acc" ).html("Precisión: " + position.coords.accuracy );
    $( "#alt" ).html("Altitud: " + position.coords.speed );        
    var link = '<a class="btn btn-primary" href="' + url + '" target="_blank">Ir a la     Ubicación en Google Maps</a>';
    $(link).appendTo('#GoogleMaps');
}

function lost()
{
    alert('Algo salió mal, Intentelo más tarde...');
};
navigator.geolocation.watchPosition(doGeo, lost, {maximumAge:0,enableHighAccuracy:true}          );

<a href="http://jsfiddle.net/aA2zv/35/" rel="nofollow">http://jsfiddle.net/aA2zv/35/</a>

надеюсь, это поможет!

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