admin管理员组文章数量:1336605
I can't seem to get navigator.getLocation() working on either Firefox 65 or Safari 10
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.";
}
}
Although Firefox ask to access location while Safari doesn't, neither of them return latitude nor longitude. Firefox and Safari log:
*Cannot load user location. Make sure you gave.....*
what am I doing wrong?
Yes I gave permissions, and yes I have location services enabled in both. The code works fine in Opera, Chrome, IE and Edge...
The curious thing is that I canNOT get my location with those browser even with 3rd party pages:
.asp?filename=tryhtml5_geolocation
UPDATE#1 I have tried Steven's suggestion to add navigator.permission;This is the snipplet I ve run just to test if it worked in 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);
}
});
}
The console says "prompt" but getCurrentPosition() is not executed.
I can't seem to get navigator.getLocation() working on either Firefox 65 or Safari 10
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.";
}
}
Although Firefox ask to access location while Safari doesn't, neither of them return latitude nor longitude. Firefox and Safari log:
*Cannot load user location. Make sure you gave.....*
what am I doing wrong?
Yes I gave permissions, and yes I have location services enabled in both. The code works fine in Opera, Chrome, IE and Edge...
The curious thing is that I canNOT get my location with those browser even with 3rd party pages:
https://www.w3schools./html/tryit.asp?filename=tryhtml5_geolocation https://developer.mozilla/en-US/docs/Web/API/Geolocation_API
UPDATE#1 I have tried Steven's suggestion to add navigator.permission;This is the snipplet I ve run just to test if it worked in 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);
}
});
}
The console says "prompt" but getCurrentPosition() is not executed.
Share edited Mar 6, 2019 at 20:07 Mat Bravo asked Mar 6, 2019 at 18:25 Mat BravoMat Bravo 1311 silver badge8 bronze badges 12- you need to also implement the permissions API. the error is due to the user not allowing geolocation permissions. see: developer.mozilla/en-US/docs/Web/API/Permissions_API/… – Steven Stark Commented Mar 6, 2019 at 18:34
- Thanks Steve, I have added the navigator.permission.query(...) from the page you linked. The log is showing "prompt" as a status but nothing is returned and It looks like getCurrentPosition() is not executed... – Mat Bravo Commented Mar 6, 2019 at 19:53
- Could you update your code example? Are you using code similar to this page: developer.mozilla/en-US/docs/Web/API/PermissionStatus – Steven Stark Commented Mar 6, 2019 at 19:57
- added to main post UPDATE#1 – Mat Bravo Commented Mar 6, 2019 at 20:08
- I am not en expert on FireFox permissions API, but I might be able to help a bit more, but this is just a hunch at this point. In my experience, when a user 'denies' permission on a given domain at any point, they will not be prompted to re-allow permissions and instead need to navigate into the browser settings for the given domain to actually change this to 'allow', not even the prompt will show. This sounds to me like a similar situation, though I experienced it with mobile safari on iOS, – Steven Stark Commented Mar 6, 2019 at 20:15
1 Answer
Reset to default 10Ok I found what was the problem and it was OSX and iOS. Firefox and Safari when running under those browsers needs location services habilitated from Finder->apple->System Preferences->Security & Privacy-> Privacy then add Firefox and Safari to the whitelist
For some reason, Chrome is setting itself into the whitelist after you accepted to share location on browser. The same for Opera.
Hence in a nutshell, the problem was Apple's privacy system which is a bit convoluted. Goods and bads I suppose
本文标签: javascriptnavigatorgetCurrentPosition() not working in Firefox nor SafariStack Overflow
版权声明:本文标题:javascript - navigator.getCurrentPosition() not working in Firefox nor Safari - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742406616a2468949.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论