我在所有浏览器中都尝试使用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;
答案 0 :(得分:0)
Firefox应该无限期地存储个人网站权限(允许/阻止),你不应该重新输入它们。
如果您使用的是本地文件或私有窗口,则可能存在问题存储网站权限。请按照下面的图片。
答案 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()时,都会显示当前坐标;
请注意,由于上面的代码段已嵌入,因此可能无法正常运行,请在实际的开发人员网页中尝试。