浏览器允许/禁止地理定位请求按钮
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。
【讨论】:
以上是关于浏览器允许/禁止地理定位请求按钮的主要内容,如果未能解决你的问题,请参考以下文章