使用Javascript地理定位API以这种方式提示用户:
“您想使用当前位置吗?”
可能会发生三件事:
1)用户选择确定 2)用户选择“不允许” 3)有错误或超时
目前似乎缺乏可用的API,因为我可以使用回调管理(1)和(3)异步,但不能(2):
navigator.geolocation.getCurrentPosition(
function(position) {
alert("You pressed OK");
},
function(error) {
alert("There is an error");
}
);
假设在(2)的情况下我想做一些特定的操作:我怎样才能检测到这个?
答案 0 :(得分:0)
可以处理所有案例错误回调:
<强>
navigator.geolocation.getCurrentPosition(success, error, options)
强><强>参数强>
...
error
可选一个可选的回调函数,它将
PositionError
个对象作为唯一的输入参数。...
<强>
PositionError
强>
PositionError
对象是具有以下属性的任意JavaScript对象:...
code
表示错误代码的数字。它可以是(1)权限被拒绝,(2)位置不可用,或(3)超时。
...
https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.geolocation.getCurrentPosition
示例:
navigator.geolocation.getCurrentPosition(..., function (e) {
switch (e.code) {
case 1 : // permission denied
case 2 : // position unavailable
case 3 : // timeout
}
});
答案 1 :(得分:0)
我在osx上运行Firefox 28,如果用户拒绝访问geolocation api,它就不会调用error()回调。
一种可能的解决方案是&#34;反向&#34;逻辑。
firstDoSomething();
var doSomethingWithPosition = function(pos) { ... };
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(doSomethingWithPosition);
}