【问题标题】:How to expire or reset geolocation如何过期或重置地理位置
【发布时间】:2013-02-04 01:49:18
【问题描述】:

当用户访问我的网站时,我会检查是否在 PHP 中设置了位置会话。如果没有设置用户位置的会话,我将他们重定向到 www.domain.net/location。在此页面上有许多选项供用户选择位置。如果浏览器允许,其中一个选项是使用浏览器进行设置。下面的代码工作得很好。

我遇到的问题是,一旦用户允许浏览器共享位置,这似乎是永远设置的。当用户在浏览时,他们可能决定改变他们的位置,然后他们点击一个按钮再次转到 www.domain.net/location 页面。在没有任何弹出的情况下,它会自动获取浏览器位置并重定向它们。页面上还有其他位置选项,包括可点击的地图,我真的需要能够重置、过期、删除、强制执行某些操作,以便浏览器再次询问用户是否想使用浏览器设置位置或允许用户使用其他选项之一。

我唯一能想到的是将下面的实际 Javascript 移动到另一个页面上,并且在 www.domain.net/location 页面上有另一个按钮,上面写着“使用我的精确位置”,然后链接到下面的JS。

有没有人知道重置这个或其他东西的另一种方法?

<script type="text/javascript" charset="utf-8">


    function findLocation()
    {
      var options = {timeout: 60000};
      navigator.geolocation.getCurrentPosition(foundLocation, noLocation, options);
    }

    function foundLocation(position)
    {
      var lat = position.coords.latitude;
      var lng = position.coords.longitude;

      //alert('Found location: ' + lat + ', ' + lng);
      window.location = "http://www.domain.net/?lat=" + lat + "&lng=" + lng;
    }

    function noLocation()
    {
      alert('Could not find location');
      window.location = "http://www.domain.net/location";
    }

    findLocation();


  </script>

【问题讨论】:

    标签: javascript html geolocation location


    【解决方案1】:

    这是每个浏览器的设置,不是您可以在脚本端控制的设置。您可以提供一个链接such as this one,说明如何为给定浏览器更新特定网站的地理位置设置。

    似乎您可以通过链接到/location 而不是链接到/location?update 或类似的方式来解决您的特定问题。本质上,转到位置页面,但添加一些阻止自动重定向的内容,以便用户可以对他们的位置做出不同的决定。

    【讨论】:

      【解决方案2】:

      我承认我只玩过几次 Javascript Location API,但我的理解是浏览器存储用户偏好(这个假设似乎得到了加强here)。

      引用的页面表明用户的偏好是基于每个站点(域)而不是每个 URL 存储的。如果不是这种情况,那么向 URL 添加一个随机字符串值应该可以解决问题。编辑:我已经检查并且每个域都定义了豁免:

      这将使您建议将代码推迟到另一个页面 - 或将其绑定到不在页面加载时运行的事件,这是我能想到的最佳解决方案。

      【讨论】:

        【解决方案3】:

        如果用户允许您的网站使用其位置,它只会在浏览器安全设置中存储“允许”以及您的网站 URL。它不存储实际位置。这是通过代码完成的。 如果您想使用新位置,只需使用 javascript 获取即可。

        navigator.geolocation.getCurrentPosition(function(position) {
          do_something(position.coords.latitude, position.coords.longitude);
        });
        

        有关获取地理位置的更多信息,请参见此处:https://developer.mozilla.org/en-US/docs/WebAPI/Using_geolocation

        如果您将位置存储在 cookie 中并重新使用该位置,只需清除 cookie 并重置它,或者根本不使用 cookie。

        要查看 Chrome 存储的地理位置设置,请打开您的 Chrome 选项“三栏”> 设置 > 高级... > 在隐私下,点击内容设置 > 在位置下,点击管理例外。

        【讨论】:

          【解决方案4】:

          我决定将 ?change-location 添加到 URL 的末尾并使用 PHP 进行检查,然后在页面上隐藏 Javascript。这不是一个很好的修复,但看起来这是每个浏览器的设置,而不是您可以使用脚本重置的东西。似乎一旦用户说“记住我的偏好”,那么它就会这样做,直到他们深入研究设置并在浏览器上进行更改。

          【讨论】:

          • 这应该是评论而不是答案(也许是对我的答案的评论,因为这或多或少是我所描述的)。
          猜你喜欢
          • 2016-04-16
          • 1970-01-01
          • 1970-01-01
          • 2015-06-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-13
          相关资源
          最近更新 更多