navigator.getCurrentPosition()在Firefox和Safari中都不起作用

问题描述 投票:0回答:1

我似乎无法在Firefox 65或Safari 10上运行navigator.getLocation()

function getLocation(user_radius) {

var geo_options = {
enableHighAccuracy: true, 
maximumAge        : 30000, 
timeout           : 27000
};

function error(err) {
console.warn('Cannot load user location. Make sure you gave permission to share location');
}

document.body.style.position = "absolute";

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function (position) {

        lat0 = position.coords.latitude;
        long0 = position.coords.longitude;
        corefunction(user_radius);
    },error,geo_options);
} else {
    x.innerHTML = "Geolocation is not supported by this browser.";
}
}

虽然Firefox要求访问位置而Safari没有,但它们都没有返回纬度和经度。 Firefox和Safari日志:

*Cannot load user location. Make sure you gave.....*

我究竟做错了什么?

是的我给了权限,是的,我在两者中都启用了位置服务。该代码在Opera,Chrome,IE和Edge中运行良好...

奇怪的是,即使使用第三方网页,我也无法使用这些浏览器获取我的位置:

https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_geolocation https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API

更新#1我已经尝试过Steven建议添加navigator.permission;这是我运行的snipplet只是为了测试它是否在Firefox中有效。

   function handlePermission() {
  navigator.permissions.query({name:'geolocation'}).then(function(result) {
  if (result.state == 'granted') {
  report(result.state);
  geoBtn.style.display = 'none';
} else if (result.state == 'prompt') {
  report(result.state);
  geoBtn.style.display = 'none';
  navigator.geolocation.getCurrentPosition(function (position) {

        lat0 = position.coords.latitude;
        long0 = position.coords.longitude;

    },error,geo_options);
} else if (result.state == 'denied') {
  report(result.state);
  geoBtn.style.display = 'inline';
}
result.onchange = function() {
  report(result.state);
}
});
}

控制台说“提示”但不执行getCurrentPosition()。

javascript browser location
1个回答
3
投票

好的,我发现了什么问题,它是OSX和iOS。在这些浏览器下运行时,Firefox和Safari需要定位服务,这些服务来自Finder-> apple->系统偏好设置 - >安全和隐私 - >隐私,然后将Firefox和Safari添加到白名单

出于某种原因,在您接受在浏览器上共享位置后,Chrome会将自己设置为白名单。 Opera也一样。

因此简而言之,问题是Apple的隐私系统有点复杂。我想是货物和坏货

© www.soinside.com 2019 - 2024. All rights reserved.