“;没有动作”;navigator.geolocation.getCurrentPosition的回调

Where is the "no-action" callback for navigator.geolocation.getCurrentPosition?

本文关键字:geolocation getCurrentPosition 回调 navigator      更新时间:2023-09-26

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

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

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的默认位置,并在用户响应浏览器提示而触发回调时刷新页面/视图。

根据HTML5地理位置规范,在用户采取行动之前,您指定的5秒超时不会启动。

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

第二个回调函数应该在用户在浏览器中单击"拒绝"后立即启动,但如果用户忽略提示并让它坐着,则不会启动任何回调函数。传统的实现是假设用户没有地理定位功能,不会点击提示,将其更多地用作增强功能,而不是必需的功能。

或者,您可以设计页面来帮助指导用户采取行动,抛出一个深色div,用"点击此处"文本屏蔽整个页面。