地理定位在Windows 7 / XP上的Safari 5.x上无效

我正在开发一个使用W3C标准地理位置API的应用程序,但我不能在我的生活中让它在我的Windows 7和XP PC上运行Safari。 它在我的iPad和iPhone上运行良好。 它也适用于Chrome(5,6,7和Canary版本)以及Firefox(3.6)。 我没有Mac,所以我不能测试它。 IE不支持地理定位,因此也涵盖了。

我创建了一个精简版本,我将其托管在Google Apps Engine上,以便您查看代码: http : //html5-geolocator.appspot.com/ 。 所有(简化的)javascript都在html中,因此您应该能够右键单击并调试/查看源代码。

这几乎是Google Map API DevGuide上示例的直接转换。 有趣的是,谷歌托管的示例在Windows 7上的Safari 5.0.x中也不起作用(但它们在所有其他平台上运行正常,与我的应用程序相同),例如http://code.google.com/ apis / maps / documentation / javascript / examples / map-geolocation.html展示与我的APP完全相同的问题,没有地图出现,网页只是保持灰色。

通过一些调试(警报(“我在这里”):-)似乎在Safari中,它确实执行了navigator.geolocation.getCurrentPosition(myCallback),但它似乎永远不会到达myCallback ……好像它永远不会从getCurrentPosition返回。 我还看到,如果我在一夜之间打开浏览器窗口,当我早上回到它时,警报和地图已经出现(虽然并非总是如此)。 我还尝试添加了一个errorCallback navigator.geolocation.getCurrentPosition(myCallback,errorCallback),但它也从未执行过,再次暗示它永远不会从getCurrentPosition调用返回。

有人想知道为什么会这样吗?

编辑:刚做了一些测试,我添加了超时选项(navigator.geolocation.getCurrentPosition(myCallback,errorCallback,{timeout:5000});),实际上它一直在超时,无论我设置多高所以它永远不会从谷歌地理定位服务返回,但为什么???

尝试打开你的Wi-Fi。 似乎Safari依靠Wi-Fi连接工作。 我遇到了完全相同的问题,打开了我的Wi-Fi连接并完美运行。

我现在正在研究如何检测这一点 – 如果我找到解决方案,将会更新