这个问题似乎是由于 Chrome 阻止了不安全的用户位置查询,所以我在 Meta SE 上发布了一个问题。
在堆栈片段中,我正在测试来自https://developer.mozilla.org/es/docs/Web/API/Geolocation/getCurrentPosition的代码
当我运行它时,堆栈片段控制台会显示我
警告:错误(1):用户拒绝地理位置
在我的浏览器设置中,我已允许向 es.stackoverflow.com 显示我的位置。我还缺少什么?
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
function success(pos) {
var crd = pos.coords;
console.log('Your current position is:');
console.log('Latitude : ' + crd.latitude);
console.log('Longitude: ' + crd.longitude);
console.log('More or less ' + crd.accuracy + ' meters.');
};
function error(err) {
console.warn('ERROR(' + err.code + '): ' + err.message);
};
navigator.geolocation.getCurrentPosition(success, error, options);
堆栈片段在沙盒中运行,因此它们无权获取位置,并且用户无法启用允许它的选项。
具体来说,这是因为 Stack Overflow 没有设置 flag
allow-same-origin
。那是你的帖子是什么样的:
应该是这样的,这样才能获取到位置:
是否添加对于MSE来说是一个复杂的讨论,有时已经咨询过。同时,它是设计使然。
备择方案:
在运行代码段之前,要求用户在控制台中运行它: