html5 getCurrentPosition在safari,适用于ios的safari或IE11中不起作用>>

问题描述 投票:0回答:1

EDIT:

此问题的症状不一致。今天,我再次尝试了一下,突然间……有时。如果我一遍又一遍地刷新,则大约有一半时间有效。如果它在iframe中运行,则iframe既需要allow-same-origin又需要allow-scripts。我真的不能确定其中的任何一个,因为它是如此不一致。最终,我决定采用基于IP的地理位置只是为了避免麻烦。

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

此URL上的文件完全包含下面的代码,并且域为SSLhttps://staging13.dgstesting.com/new2.html

<!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

上进行尝试

Google当然没有输入,因为导航器是html5的产品

编辑:此问题的症状不一致。今天,我再次尝试了一下,突然间……有时。如果我一遍又一遍地刷新,则大约有一半时间有效。如果它运行在...

html ios safari internet-explorer-11 navigator
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.