html5地理位置无法在Safari浏览器上工作

问题描述:

正在处理html5地理位置。html5地理位置无法在Safari浏览器上工作

在Mozilla,Chrome,IE上试过。在他们身上工作得很好,但不适合徒步旅行。在Mac上的Safari(8.0.5)进行测试,Safari浏览器(5.1)在Windows

只是击中网址

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> 

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

+0

如果可能的话,您可以考虑通过使用您正在测试的机器尝试通过另一个网络上的无线网络进行故障排除吗?例如,如果可以的话,从公共WiFi热点尝试。 – sideshowbarker

+0

不幸的是,当Safari做到这一点时,似乎可能没有任何有用的方式来以编程方式获取有关失败原因的信息(例如,如果由于机器正在使用以太网连接而导致失败,该细节未公开由Safari以任何方式你可以到达)。但在这种情况下,您应该尝试其他使用Geolocation API的Web应用程序(例如Web上的教程网站上的演示应用程序),并查看它们是否也在您的环境中的Safari中失效(它们几乎肯定会)。在这种情况下,您无法解决问题。 – sideshowbarker

+0

@sideshowbarker感谢您的建议:),我已经测试过与Wi-Fi连接的Mac上的safari,它在那里工作,但不适用于Wi-Fi和LAN上的笔记本电脑。 – Kamini

您是否连接了无线或有线网络?

看来safari有麻烦,当你没有连接wi-fi。

来源

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

Geolocation in Safari 5

+0

@ParanOa尝试过两种方法,但同样的麻烦。 – Kamini

+0

@Kamini你确定你在Safari中使用wifi进行测试吗?你的以太网电缆拔掉了?因为这里引用的其他StackOverlfow答案表明其他人遇到了与您报告完全相同的问题,但只有当他们使用“有线”(以太网)连接时(在这种情况下,Safari似乎或有时只是返回错误而不是尝试确定位置)。 – sideshowbarker

+0

@ParanOa嗨,它是工作 - >在MAc与Wi - Fi的Safari浏览器,但不适用于 - >与Wi - Fi的Windows Safari浏览器。 – Kamini

基于对这个问题的例子,下面是一个完整的工作片段:

<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的网络督察(例如,从开发页面上的菜单或右键单击并选择检查元素)然后转到控制台选项卡,然后检查以查看记录了哪些错误。

现在,只要将代码段,只是完全清楚,一些基本点需要注意:

  • 脚本必须实际调用getLocation()功能(而不仅仅是把它定义)
  • 文档实际上必须有一个id=demo元素
  • 脚本应该在id=demo元素之后放置(如果你把呼叫getLocation()中,例如,文档的head,它是行不通的,因为它会在前运行元素存在于DOM中)

此外,一般说明:永远不要使用w3schools.com的任何东西。这是马虎,非常不可靠,维护很差。请使用MDN。例如,MDN有一个很好的Using geolocation页面,其中complete code for a good live example

+0

感谢您的回复@sideshowbarker我已经更新了代码,并在Mac和Windows上检查了Safari上的MDN示例,但给出了消息“无法检索到您的位置”。请帮忙。 – Kamini

不幸的是Apple不通过HTTP连接提供地理位置数据。您需要HTTPS才能访问Safari上的客户端地理位置。