页面加载前的地理位置提示?

Posted

技术标签:

【中文标题】页面加载前的地理位置提示?【英文标题】:Geolocation prompt before page load? 【发布时间】:2015-07-24 11:15:28 【问题描述】:

我正在开发的一个网站要求用户能够根据 html5 地理位置检查以当地货币付款。我设置了一段 javascript / html / php 来显示一个“启动页面”,它位于他们到达的第一页的顶部,上面写着“我们认为您的当地货币是:”,并要求他们选择一种货币。

目前,浏览器的“你想分享你的位置”问题在页面加载后出现。这意味着“我们认为您的本地货币是:”页面的一部分在询问用户是否想要分享他们的信息之前已经完成了地理位置检查,奇怪的是。

为了测试地理定位代码,我为firefox添加了geolocator插件,它允许我给出不同的html位置。但是,我无法对此进行测试,因为在询问用户是否要共享其位置之前,地理位置检查正在运行。

【问题讨论】:

如果我了解您想要做什么,您需要延迟弹出窗口直到地理定位调用successerror,或者您需要延迟地理定位调用直到用户交互之后弹出窗口;不要尝试在页面加载时初始化两者。 “您要么需要延迟弹出窗口,直到地理位置调用成功或错误之后” - 是的,这听起来不错,尽管这将是整个页面的负载。知道如何在 javascript 中实现这一点吗?谢谢。 脚本在哪里?尝试使其成为<body> 中的第一个标签。除此之外,您可以隐藏所有内容,然后使用window.onload 事件提示并取消隐藏正确的内容... 地理位置代码当前位于 head 标签内,并且使用 jquery - $(window).load。我会尝试你的建议并报告。谢谢。 我尝试了@WhiteHat 的建议,遗憾的是,无论如何,我在 chrome 中不再收到“分享您的位置”提示。感谢您的尝试。 【参考方案1】:

function success(position) 
  $('#loc').text('We think you\'re at (' +
                 Math.round(position.coords.longitude) + ', ' +
                 Math.round(position.coords.latitude) +
                 '). If not, pick:');
  $('#popup').removeClass('hidden');


function error() 
  $('#loc').text('We have no clue where you are, so pick:');
  $('#popup').removeClass('hidden');


if ("geolocation" in navigator) 
  navigator.geolocation.getCurrentPosition(success, error);
 else 
  error();
#popup 
  display: fixed;
  top: 100px;
  left: 200px;
  width: 200px;
  background: black;
  color: white;
  padding: 10px;

#popup.hidden 
  display: none;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="popup" class="hidden">
  <div id="loc"></div>
  <button>THE WORLD</button>
  <button>SOMEWHERE ELSE</button>
</div>

(由于某种原因在 SO sn-p 中不起作用,但适用于 JSBin

【讨论】:

以上是关于页面加载前的地理位置提示?的主要内容,如果未能解决你的问题,请参考以下文章

html5获取地理位置,如果用户拒绝了,之后每次加载都提示:拒绝获取地理位置,如何获取权限:如果用

页面刷新跳转后,导航栏高亮显示跳转前的点击位置

如何避免“Internet Explorer 想要跟踪您的物理位置”提示?

html5用户如果拒绝获取经纬度之后页面加载一直提示拒绝获取经纬度,怎麽获取权限,页面每次加载都能

微信浏览器跳转页面后再返回,如何恢复到跳转前的位置的问题。

如何清除地图上当前的标记[重复]