navigator.geolocation.getCurrentPosition 的“无操作”回调在哪里?

Posted

技术标签:

【中文标题】navigator.geolocation.getCurrentPosition 的“无操作”回调在哪里?【英文标题】:Where is the "no-action" callback for 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 的默认位置,并在由于用户回答浏览器提示而触发其中一个回调时刷新页面/视图。

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

以上是关于navigator.geolocation.getCurrentPosition 的“无操作”回调在哪里?的主要内容,如果未能解决你的问题,请参考以下文章