【问题标题】:html5 getCurrentPosition not working in safari, safari for ios, or IE11html5 getCurrentPosition 在 safari、safari for ios 或 IE11 中不起作用
【发布时间】:2020-02-01 00:22:15
【问题描述】:

编辑:此问题的症状不一致。今天我又试了一次,突然它起作用了……有时。如果我一遍又一遍地刷新它大约有一半的时间起作用。如果它在 iframe 中运行,则 iframe 需要允许同源和允许脚本。我真的不能确定这一切,因为它是如此不一致。最终我决定使用基于 IP 的地理定位,只是为了避免头痛。

如果有人可以复制这个问题,请在 cmets 中告诉我。 TLDR:此链接将在 safari 和 ie11 中显示错误,但在 chrome 中不会。

有问题的代码:

<!DOCTYPE html>
<html>
  <head>
    <script>  
        navigator.geolocation.getCurrentPosition(function(position){
                document.body.innerHTML = position.coords.latitude;
        }, function(error){
                document.body.innerHTML = error.message;
        });
    </script>
  </head>
  <body>
  </body>
</html>

问题:在 chrome、edge beta(基本上是 chrome)和 android 上的 chrome 上,此代码将成功并将您的设备纬度打印到页面。 在 Safari、iOS 版 Safari 和 IE11 上,这将失败并显示消息“此站点无权使用 Geolocation API”。

我认为这不是指用户授予访问位置数据的权限,但我还是检查了这一点。似乎并非如此,因为它在一个浏览器中运行,但在同一设备上却不是另一个浏览器。在我的示例中,它适用于 chrome,但不适用于同一台 Windows 10 计算机上的 ie11。我也让一位同事确认了同样的事情,它可以在 chrome 上运行,但在他的 mac 上不能运行 safari。

这让我认为这是一个域问题,但为什么它可以在一个浏览器中运行,而不是在另一个浏览器中运行?经过大量谷歌搜索后,我能找到的最佳答案是这是一个 SSL 问题,但如果你转到 https://developers.google.com/maps/documentation/javascript/geolocation,你会发现即使 google.com 也面临同样的问题。所以我认为这排除了这一点。你甚至可以在 w3schools 自己的网站上试用它https://www.w3schools.com/html/html5_geolocation.asp

这里谷歌当然没有输入,因为navigator是html5的产物

【问题讨论】:

    标签: html ios safari navigator


    【解决方案1】:

    我无法在 IE 11 中重现该问题。我在 IE 11 中测试了 Google 和 w3schools 链接,他们请求获取位置的权限,如果我允许,他们可以显示位置。我还尝试了您提供的代码 sn-p,它在 IE 11 和 Chrome 中都输出了位置。

    您是否取消选中 IE 11 中的 "Never allow websites to request your physical location" 框?另外,我还找到了similar thread,你也可以参考里面的解决方案。

    在您的帖子中,您似乎找到了解决方案。我建议您也可以将您的解决方案作为答案,并将最佳答案作为可接受的答案。它可以在未来帮助其他社区成员解决类似的问题。

    【讨论】:

    • TLDR:在 Safari 中尝试。 (我没有 Mac) 完整评论:是的,IE11 突然可以工作了,我可以在整个上周重现这个问题,但突然间我无法跨多台计算机。但是,至少在 Mac 上,Safari(可能还有 firefox)似乎仍然存在问题。显然 Safari 与 IE11 不同,它是现代的,所以这意味着问题仍然存在,因此我不会说我有答案。相反,我有一个解决方法,基本上是尝试获取地理信息,如果失败则使用 IP,无论如何我都应该这样做,所以这很好,但对我来说 Safari 无法正常工作似乎仍然很荒谬。
    • “绝不允许网站请求您的实际位置”显示为灰色(未选中)。我认为 W10 PC 上的 IE11 会关闭此功能,但我通过注册表将其重新打开。无论如何都没有帮助/
    • 我也没有mac。所以我不能在 Safari 上尝试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多