【问题标题】: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 中不再收到“分享您的位置”提示。感谢您的尝试。

标签: javascript php html geolocation


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-11
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 2013-01-22
    相关资源
    最近更新 更多