【发布时间】:2011-04-10 20:10:21
【问题描述】:
我正在开发一个使用 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,没有地图,网页一直是灰色的。
通过一些调试 (alert("I am here") :-) 似乎在 Safari 中,它确实执行了 navigator.geolocation.getCurrentPosition(myCallback),但它似乎永远不会到达 myCallback ...就好像它从来没有从 getCurrentPosition 返回。我还看到,如果我让浏览器窗口在一夜之间打开,当我早上回到它时,警报和地图就会出现(尽管并非总是如此)。我还尝试添加一个 errorCallback navigator.geolocation.getCurrentPosition(myCallback, errorCallback) 但它也从未执行过,再次表明它永远不会从 getCurrentPosition 调用返回。
为什么会这样?
编辑: 只是做了一些更多的测试,我添加了超时选项 (navigator.geolocation.getCurrentPosition(myCallback, errorCallback, {timeout: 5000});) ,事实上它一直超时,不管我设置多高所以它永远不会从 Google 地理定位服务返回,但为什么呢?
【问题讨论】:
-
我可以确认完全相同的结果。 Chrome 甜,Firefox 3.5 甜,Safari 5 没有骰子。 :(
-
另外仅供参考,我正在运行 Snow Leopard
标签: jquery ruby-on-rails html safari geolocation