如何处理Mozilla Firefox在JavaScript

时间:2018-04-11 12:58:42

标签: javascript html

我在所有浏览器中都尝试使用Geo定位服务,除了Mozilla Firefox之外,它再次询问位置并在允许后获得



var x = document.getElementById("demo");

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

function showPosition(position) {
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude;
}
&#13;
<button onclick="getLocation()">Try It</button>

<p id="demo"></p>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

Firefox应该无限期地存储个人网站权限(允许/阻止),你不应该重新输入它们。

显示&#34;记住这个决定&#34; Showing the checkbox Remember this decision

如果您使用的是本地文件或私有窗口,则可能存在问题存储网站权限。请按照下面的图片。

&#34;记住这个决定&#34;没出现 Remember this decision not appear

More detail

答案 1 :(得分:0)

可能是因为Firefox处于私有模式。您可以使用navigator.geolocation.watchPosition()并将位置存储在变量中:

var x = document.getElementById("demo");

var position = null;

function getLocation() {
    if (navigator.geolocation && !position) {
        navigator.geolocation.watchPosition(function(currentPosition) {
            position = currentPosition;
        }, function(error) {
            alert(error)
        });
    }
};

function showPosition() {
    if (position) {
        x.innerHTML = "Latitude: " + position.coords.latitude + 
        "<br>Longitude: " + position.coords.longitude;
    } else {
         x.innerHTML = "Geolocation is not supported or authorized.";
    }
};

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

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

如果浏览器支持地理定位并且由用户授权。每次调用showPosition()时,都会显示当前坐标;

请注意,由于上面的代码段已嵌入,因此可能无法正常运行,请在实际的开发人员网页中尝试。