浏览器允许/禁止地理定位请求按钮

Posted

技术标签:

【中文标题】浏览器允许/禁止地理定位请求按钮【英文标题】:browser Allow/Disallow buttons on geolocation request 【发布时间】:2014-05-16 14:47:47 【问题描述】:

是否可以将事件附加到浏览器地理定位请求状态?

当 bar 可见时,向用户显示箭头...类似这样:

【问题讨论】:

【参考方案1】:

顺便说一句,您正走在一条黑暗的道路上,必须为各种版本的浏览器/类型/等提供不同的帮助文本。

例如,Firefox 29.0.1 权限窗口:

无论如何,我会建议 Nerdicus 推荐的一个变体:

我不会默认显示箭头,然后在调用 javascript 时将其隐藏,而是默认显示:none;,然后在发出地理定位请求之前触发 .show() 以减少“闪烁” ,然后将其隐藏在您的成功/错误回调中。

此外,在您的成功处理程序中,您可以创建一个 cookie(可能在会话级别)

$.cookie("geoperm", "true")

然后您可以在显示工具提示之前检查现有权限:

if (navigator.geolocation) 
  // Show the arrow here, but only if there isn't a cookie stating we have permissions
  if(!$.cookie("geoperm")) $("#geo-helper").show();

  navigator.geolocation.getCurrentPosition(success, error);
 else 
  error('not supported');

【讨论】:

【参考方案2】:

您始终可以检测用户是否允许/拒绝的地理位置,然后从那里隐藏指向接受/拒绝提示的大箭头。

if (navigator.geolocation) 
    navigator.geolocation.getCurrentPosition(success, error);
 else 
    error('not supported');

【讨论】:

一旦用户点击允许并重新访问网站,在浏览器隐藏箭头之前会有相当大的延迟(2-3 秒)。第一次运行的结果完美运行,连续运行箭头显示没有浏览器栏。【参考方案3】:

请注意,navigator.geolocation 返回false,以防浏览器本身不支持地理定位 API。这与用户可能(或可能不会)授予网站访问他/她的位置的权限有关。

更多信息,我建议阅读this html5doctor.com article。

【讨论】:

以上是关于浏览器允许/禁止地理定位请求按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何隐藏或集成地理定位权限弹出到按钮(Javascript + HTML)

来自 3rd 方脚本的 html5 地理定位权限

地理定位在笔记本电脑上工作,但不在智能手机上

Geolocation 地理定位

Geolocation地理定位

浏览器内地理定位功能:如何在用户拒绝后提示用户重新启用?