我有一个使用HTML5地理位置报告我的位置的应用程序.该应用程序在Firefox和Chrome上运行正常,但在Safari 5上,它表示Safari不支持Geolocation.
从我读到的,Safari 5确实支持Geolocation.我错过了什么?
谢谢你的时间.
苏尼尔
我正在开发一个使用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上示例的直接转换.有趣的是,Google托管的示例在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});),实际上它一直在超时,无论我设置多高所以它永远不会从Google地理定位服务返回,但为什么呢?