navigator.getCurrentPosition()在Firefox或Safari中均不起作用

时间:2019-03-06 18:25:41

标签: javascript browser location

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

Dim EmailAddress As String
EmailAddress = Nz(DLookup("[EMAIL ADDRESS]", "[EMPLOYEE INFORMATION LIST]", "[COY NUMBER] = '" & [EMPLOYEE CERTIFICATE LIST EXPIRY]![EMPLOYEE].Value & "' "))
Label39.Caption = EmailAddress

尽管Firefox要求访问位置,而Safari却不要求访问位置,但它们都不返回纬度或经度。 Firefox和Safari日志:

Nz()

我在做什么错了?

是的,我授予了权限,是的,我都启用了定位服务。 该代码可在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

UPDATE#1 我尝试了史蒂文(Steven)的建议来添加navigator.permission;这是我运行的片段,目的是测试它是否在Firefox中有效。

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.";
}
}

控制台显示“提示”,但未执行getCurrentPosition()。

1 个答案:

答案 0 :(得分:1)

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

由于某些原因,在您同意共享浏览器上的位置后,Chrome会将自己设置为白名单。对于Opera也是如此。

简而言之,问题在于苹果的隐私系统有些复杂。我想的是好事