Javascript - 我的函数地理定位权限 onchange returns 值呈几何级数
Javascript - my function geolocation permission onchange returns value in a geometric progression
这是我的代码,当用户更改地理权限时应该切换按钮
toogleGeoButtons()
工作正常
但是当在 onchange 函数上启动时,它甚至会导致 toogleGeoButtons()
次。所以
function toogleGeoButtons() {
// toggle function
console.log("toggled")
}
geoSettings = {
timeout: 1000 * 10,
maximumAge: 1000 * 60,
enableHighAccuracy: true
}
navigatorPermisstion();
function navigatorPermisstion() {
navigator.permissions.query({
name: 'geolocation'
}).then(function(result) {
if (result.state == 'granted') {
toogleGeoButtons();
// console.log(result.state);
getLocation();
} else if (result.state == 'prompt') {
// console.log(result.state);
navigator.geolocation.getCurrentPosition(revealPosition, positionDenied, geoSettings);
} else if (result.state == 'denied') {
toogleGeoButtons();
// console.log(result.state);
}
result.onchange = function() {
navigatorPermisstion();
}
});
}
function revealPosition(position) {
console.log(position)
}
function positionDenied(positionError) {
console.log(positionError)
}
因为您要多次添加函数,所以删除 navigatorPermission();从改变事件开始。
试试这个:
navigatorPermisstion();
function navigatorPermisstion() {
navigator.permissions.query({
name: 'geolocation'
}).then(function(result) {
if (result.state == 'granted') {
getLocation();
} else if (result.state == 'prompt') {
navigator.geolocation.getCurrentPosition(revealPosition, positionDenied, geoSettings);
}
result.onchange = function() {
toogleGeoButtons();
}
});
}
这是我的代码,当用户更改地理权限时应该切换按钮
toogleGeoButtons()
工作正常
但是当在 onchange 函数上启动时,它甚至会导致 toogleGeoButtons()
次。所以
function toogleGeoButtons() {
// toggle function
console.log("toggled")
}
geoSettings = {
timeout: 1000 * 10,
maximumAge: 1000 * 60,
enableHighAccuracy: true
}
navigatorPermisstion();
function navigatorPermisstion() {
navigator.permissions.query({
name: 'geolocation'
}).then(function(result) {
if (result.state == 'granted') {
toogleGeoButtons();
// console.log(result.state);
getLocation();
} else if (result.state == 'prompt') {
// console.log(result.state);
navigator.geolocation.getCurrentPosition(revealPosition, positionDenied, geoSettings);
} else if (result.state == 'denied') {
toogleGeoButtons();
// console.log(result.state);
}
result.onchange = function() {
navigatorPermisstion();
}
});
}
function revealPosition(position) {
console.log(position)
}
function positionDenied(positionError) {
console.log(positionError)
}
因为您要多次添加函数,所以删除 navigatorPermission();从改变事件开始。
试试这个:
navigatorPermisstion();
function navigatorPermisstion() {
navigator.permissions.query({
name: 'geolocation'
}).then(function(result) {
if (result.state == 'granted') {
getLocation();
} else if (result.state == 'prompt') {
navigator.geolocation.getCurrentPosition(revealPosition, positionDenied, geoSettings);
}
result.onchange = function() {
toogleGeoButtons();
}
});
}