【问题标题】:navigator.geolocation.getCurrentPosition Callbacks won't work on Firefox 10navigator.geolocation.getCurrentPosition 回调在 Firefox 10 上不起作用
【发布时间】:2012-03-02 04:58:04
【问题描述】:

我正在构建一个使用 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

【问题讨论】:

  • 你在什么硬件上运行 firefox?
  • 地理位置功能需要支持地理位置的移动设备。 You can find out more here.
  • 那么为什么其他浏览器可以正确获取我居住地的坐标?如果是这种情况,为什么 Firefox 不使用错误代码 2(位置不可用)或在这种情况下应该运行的其他错误来运行错误回调?
  • 它使用您的 IP 地址或上游 IP 或无线网络
  • 我不明白你的意思吗?显然它是这样做的,但是问题是为什么 Firefox 在它应该这样做的时候不这样做呢?我确信 Firefox 10 存在错误,或者它在我的计算机上无法正常工作。例如,maxheapsize.com/static/html5geolocationdemo.html 来自stackoverflow.com/questions/2248404/about-geolocation-in-html-5 的演示在我的 Firefox 浏览器上无法正常运行。我将在我的笔记本电脑和其他 PC 上进行测试并报告我的发现。

标签: html firefox geolocation


【解决方案1】:

好吧,我发现问题确实出在 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');
        }
    };

正如您在此处看到的,已添加 timeout:5000,这意味着如果由于某种原因浏览器花费超过 5000 毫秒(5 秒),则会引发超时错误(即错误代码 3)。因此,现在每当 Firefox 不工作时,它至少会运行错误回调,并且我会收到“发生错误。错误代码:3”的警报消息。

显然超时的默认值是无限的,所以它永远不会超时...... Chrome 是 100% 可靠的,但 Firefox 在我的机器上大约是 10% 可靠,这非常令人失望。在我的另一台运行 Windows XP 且位于同一网络的计算机上,Firefox 似乎是 100% 可靠的。

【讨论】:

【解决方案2】:

我已经为你做了这个例子:

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}          );

@987654321@

希望对你有帮助!

【讨论】:

  • 从函数中获取消息丢失:(
猜你喜欢
  • 2014-08-13
  • 2018-03-30
  • 2019-02-04
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 2018-11-14
  • 1970-01-01
相关资源
最近更新 更多