navigator.geolocation.getCurrentPosition():如果用户说"不",则触发回调?

bri*_*hen 7 javascript geolocation

这是我的代码的近似值:

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(
        function(position) {
          // success! 
        },
        function(error) {
          // error
        },
        { timeout: 10000 }
    );
} else {
    // your browser/device doesn't support geolocation
}
Run Code Online (Sandbox Code Playgroud)

当此代码运行时,浏览器会正确地要求用户跟踪其物理位置的权限.如果用户说"是",则它正确运行第一个参数('success')指定的函数.

我不清楚当用户说"不"时会发生什么.在我目前的测试中(在Firefox 7中),如果用户说"不",则没有任何反应.我有点期待错误回调(第二个函数)运行,但事实并非如此.我希望对用户的否定响应做出反应(通过删除触发此调用的链接).

ale*_*lex 8

你需要在第二个回调navigator.geolocation.getCurrentPosition()函数中处理它,它处理诸如用户拒绝其位置(以及其他事情)之类的问题.

navigator.geolocation.getCurrentPosition(fn, function(errorCode) {
    if (errorCode == 1) {
       alert('Y U NO GIVE LOCATION?');
    }
});
Run Code Online (Sandbox Code Playgroud)

W3C规范.

错误代码列表.

  • 好吧,如果您给出答案"不是现在",Firefox似乎不会触发任何回调:http://stackoverflow.com/questions/6932758/firefox-5-geolocating-and-not-now-issue https:// bugzilla.mozilla.org/show_bug.cgi?id=675533如果您回答"从不",它会像Alex建议一样触发错误回调. (4认同)