【问题标题】:Where is the "no-action" callback for navigator.geolocation.getCurrentPosition?navigator.geolocation.getCurrentPosition 的“无操作”回调在哪里?
【发布时间】:2012-03-23 18:17:15
【问题描述】:

当向浏览器请求访问当前位置的权限时,确定用户是否忽略了浏览器提示或选择了“不是现在”选项的最佳方法是什么?

这种情况下似乎没有触发超时。

if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
        currentLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
        callback();
    }, function() {
        currentLocation = default_location;
        callback();
    },{timeout: 5000});
}

我现在使用的解决方案是使用 currentLocation 的默认位置,并在由于用户回答浏览器提示而触发其中一个回调时刷新页面/视图。

【问题讨论】:

    标签: javascript google-maps-api-3 geolocation


    【解决方案1】:

    根据 HTML5 geolocation 规范,您指定的 5 秒超时在用户采取行动之前不会开始。

    请注意,获取用户权限所花费的时间不包括在 timeout 属性所涵盖的时间段内。超时属性只适用于位置获取操作。

    当用户在浏览器中单击“拒绝”时,第二个回调函数应该被触发,但如果用户忽略提示并让它坐下,则不会触发任何内容。传统的实现是假设用户没有地理定位功能并且不会点击提示,将其更多地用作增强而不是必需的功能。

    或者,您可以设计页面来帮助引导用户采取行动,使用“点击此处”文本来覆盖整个页面。

    【讨论】:

      猜你喜欢
      • 2012-03-02
      • 2017-11-03
      • 1970-01-01
      • 2018-02-02
      • 2019-02-04
      • 2011-03-08
      • 2021-08-11
      • 2019-08-17
      • 2016-10-12
      相关资源
      最近更新 更多