4

当我测试 HTML5 功能之一——我的项目的地理定位时,我意识到用户可以在不允许或拒绝的情况下关闭提示,这违背了提示的全部目的。

而且因为在我的项目中,我想根据用户的位置动态地向用户显示数据,这是无法做到的,因为在不知道用户的响应的情况下,它不会触发两个回调中的任何一个 - 成功/错误。

所以我开始搜索是否有任何解决方案,对此有很多建议是设置超时,我尝试过,一切正常。然而,这里的一个小缺陷是,当它达到超时到期时,所有数据都已经显示出来了,当我说全部时,我的意思是一切,因为没有检测到位置。

所以我想出了两个可能可行的解决方案,1)创建一个自定义地理位置提示,强制用户允许/拒绝共享位置,并将响应传递给浏览器以设置位置首选项 2)暂停页面加载(停止内容从被渲染)并等待它达到超时到期或得到用户的响应

有谁知道如何实施这两种解决方案之一?

PS:抱歉,如果您不清楚,我知道我的英语很烂,但我可以更详细地解释。

多谢你们!

4

1 回答 1

3

如果您的项目是基于浏览器的,则不应使用自定义地理定位提示,因为恶意开发人员可能会使用该方法来欺骗用户。此外,由于 Geolocation API 是一个异步事件,它会在等待时继续加载页面的其余部分。

我建议使用条件语句而不是 else 子句。这样,您的脚本函数应该只在共享位置后执行,并且您可以回退到如果没有提供地理位置信息会发生什么(我强烈建议您这样做,因为在没有提供数据的情况下会发生这种情况)。

使用 JS 检查地理位置信息的条件语句示例:

if (navigator.geolocation) {
    // code to run if there is geolocation information
}
else{
// code to run if no geolocation info is given to the browser
}
于 2013-02-18T23:04:53.187 回答