如何检测地理定位的负面用户响应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检测地理定位的负面用户响应相关的知识,希望对你有一定的参考价值。

当使用地理位置API qazxsw poi如何处理否定响应?

它说当出现错误时会调用第二个回调函数。但是,当用户选择不通过取消函数永远不会被触发的请求来显示他的位置时。

似乎navigator.geolocation.getCurrentPosition()无限期地等待答案。 (至少在Firefox 4中)

我怎么知道用户何时按下取消(或没有等)

有任何想法吗?

答案

见下面的编辑 你是对的,错误处理程序应该在用户拒绝位置请求时触发。传递给错误处理程序的错误对象应该包含错误代码和消息,让您知道用户拒绝了请求。但是,当我从位置请求对话框中选择getCurrentPosition()选项时,我没有在FF4中看到这一点。

在Chrome中,API /回调功能完全符合预期,但在Chrome中没有第三种选择。

编辑 啊,好吧,我在FF4的行为中发现了一点怪癖。在正常模式下(非私密浏览),用户将看到3个选项:

  • 永远分享
  • 绝不分享
  • 现在不要

Not Now正确触发错误处理程序,但Never share没有。 这是什么意思以及如何处理它?

好吧,看起来如果用户点击Not Now,你就不会得到回复。因此,我会设置一个超时,检查由其中一个处理程序设置的标志。如果未设置此标志(意味着处理程序未在指定的时间内触发),您可以执行以下两项操作之一:

  1. 假设用户拒绝了请求(即使拒绝是临时的)
  2. 您可以再次询问用户权限(通过相同的调用),然后将再次向用户显示该对话框。

选项2可能是糟糕的可用性(并且很烦人),因此最好假设他们暂时拒绝并在他们下次访问该网站时再次(礼貌地!)问他们。


我创建了一个JsFiddle来玩这个API:

Not Now

另一答案

我认为这不是一个错误,而是一个故意的选择,当涉及到难以制作提供不良功能的网站时......(最好的答案暗示;如果你再次请求 - 当有人已经说过没有 - 是相当讨厌的...)...

“不是现在”和“从不”之间的区别是网站的程序员知道...如果“不是现在”被触发..如果他再次发送请求,将会向用户提供实际提示..因此,他可以“强迫”用户的手接受它......或者只是阻止数据,直到用户同意为止。

体面和尊重的程序员希望使用这些信息来更好地提供服务(并且不要等待不会发生的事情)..但事实是,有足够的垃圾邮件发送者可以压倒最终用户。

(并且如果已经以“从不”回答,则无需再次发送请求,因为...用户不会以同样的方式受到恐吓......如果网站变得迟钝且没有响应,用户将关闭它)

PS。 OH和SERIOUS程序员实际上可能会拒绝作为一个实际的拒绝..并在某处存储这个选择..尽管事实上“不是现在”实际上并不打算作为ABSOLUTE拒绝,而是“我已经决定没有任何明确的立场,因为“..所以...有人说”现在不是“..如果服务器知道这个选择并把它当作”不“..那么可能永远不会有另一个请求发送..尽管该人希望能够在以后重新考虑)

以上是关于如何检测地理定位的负面用户响应的主要内容,如果未能解决你的问题,请参考以下文章

如果用户未回答 JavaScript 地理定位小狗,如何继续执行代码?

移动地理定位精度 - cordova / phonegap

geolocation实现地理定位

服务器端地理定位?

如何使绝对定位的元素响应?

组合地理定位框架