navigator.geolocation.getCurrentPosition 不适用于 Firefox

Posted

技术标签:

【中文标题】navigator.geolocation.getCurrentPosition 不适用于 Firefox【英文标题】:navigator.geolocation.getCurrentPosition not working with Firefox 【发布时间】:2014-12-08 22:04:06 【问题描述】:

当我拒绝透露我的位置时,我刚刚开始发现 。 IE。它不会像以前那样返回错误。它在 Safari 和 Chrome 上运行良好,但在 Firefox 33.1 上运行良好

我在运行 w3schools 示例代码 (http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_geolocation_error) 时可以看到这个问题,如下所示:

<!DOCTYPE html>
<html>
<body>

<p>Click the button to get your coordinates.</p>

<button onclick="getLocation()">Try It</button>

<p id="demo"></p>

<script>
var x = document.getElementById("demo");

function getLocation() 
    if (navigator.geolocation) 
        navigator.geolocation.getCurrentPosition(showPosition, showError);
     else  
        x.innerHTML = "Geolocation is not supported by this browser.";
    


function showPosition(position) 
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude;	


function showError(error) 
    switch(error.code) 
        case error.PERMISSION_DENIED:
            x.innerHTML = "User denied the request for Geolocation."
            break;
        case error.POSITION_UNAVAILABLE:
            x.innerHTML = "Location information is unavailable."
            break;
        case error.TIMEOUT:
            x.innerHTML = "The request to get user location timed out."
            break;
        case error.UNKNOWN_ERROR:
            x.innerHTML = "An unknown error occurred."
            break;
    

</script>

</body>
</html>

如果我允许访问我的位置,这适用于 Firefox。如果我拒绝访问,则不会调用 showPosition 或 showError 函数。没发生什么事。我已经用 Mac 和 PC Firefox 尝试过这个并遇到同样的问题。不过在 Safari 和 Chrome 上运行良好。

【问题讨论】:

适用于 FF 30.0,下载最新 也适用于 FF 34.0 - 可能是 33.1 的问题?您看到的错误是什么?传递给 showError 的对象对我来说是 PositionError code: 1, message: "User denied geolocation prompt" 我根本没有看到错误,就好像函数没有返回 我的问题是,如果我拒绝访问,showPosition 和 showError 函数都不会被调用。 【参考方案1】:

我刚刚发现这是 Firefox 的一个特性,或者我更喜欢称之为 bug。详细在这里:https://bugzilla.mozilla.org/show_bug.cgi?id=675533

【讨论】:

以上是关于navigator.geolocation.getCurrentPosition 不适用于 Firefox的主要内容,如果未能解决你的问题,请参考以下文章