html5地理定位不适用于Safari浏览器

时间:2015-10-05 12:01:26

标签: windows html5 safari geolocation

致力于html5地理定位。

尝试了mozilla,chrome,IE。他们工作正常,但没有为野生动物园工作。在Mac上的safari(8.0.5),在Windows上的safari(5.1)上进行了测试

只需点击网址

即可
http://www.w3schools.com/html/html5_geolocation.asp

OR

http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_geolocation

  <!DOCTYPE html>
<html>
<body>

<p>Click the button to get your coordinates.</p>

<button onclick="getLocation()">Try It</button>

<p id="demo"></p>

<script>
var x = document.getElementById("demo");

function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else { 
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}

function showPosition(position) {
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude;  
}
</script>

</body>
</html>

它允许弹出允许/禁止但在允许后不执行任何操作。 我已经在Mac上测试了与wi-fi连接的Safari,但也没有用于wi-fi和LAN上的笔记本电脑。

4 个答案:

答案 0 :(得分:5)

您是通过Wi-Fi连接还是通过有线网络连接?

当你没有与wi-fi连接时,似乎safari有麻烦。

来源

Geolocation not workin on Safari 5.x on Windows 7/XP

Geolocation in Safari 5

答案 1 :(得分:4)

根据问题中的示例,以下是完整的工作代码段:

<p id=demo>
<script>
var x = document.getElementById("demo");
function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else {
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}
function showPosition(position) {
    x.innerHTML = "Latitude: " + position.coords.latitude +
    "<br>Longitude: " + position.coords.longitude;
}
getLocation()
</script>

我在我的环境中在Safari中测试过,它按预期工作。问题中的实际例子是不完整的,因此它本身永远不会做任何事情。因此,很难知道在Mozilla,Chrome和IE中可能没有看到完整代码的情况。

如果上述代码段仍然无法在您的Safari中使用,请打开Safari的Web Inspector(例如,从开发菜单或右键单击页面并选择检查元素),然后转到控制台标签,查看已记录的错误。

目前,就代码片段而言,只需要完全清楚,需要注意一些基本要点:

  • 脚本必须实际调用getLocation()函数(不只是定义它)
  • 文档实际上必须有id=demo元素
  • 脚本应放在id=demo元素之后(如果您将getLocation()的调用放入文档的head中,那么它就不会起作用,因为它将在DOM中存在id=demo元素之前运行

另外,一般情况说明:永远不要使用w3schools.com。它很草率,非常不可靠,维护得很差。而是使用MDN。例如,MDN有一个非常好的Using geolocation页面,complete code for a good live example

答案 2 :(得分:0)

很遗憾,Apple不通过HTTP连接提供地理位置数据。您需要使用HTTPS才能访问Safari上的客户端地理位置。

答案 3 :(得分:0)

JavaScript地理位置未要求用户共享iOS和Desktop Safari上的位置。事实证明,Safari共享站点需要HTTPS和错误处理。添加SSL证书后,它就可以使用!