【问题标题】:Geolocation not working on Safari 5.x on Windows 7/XP地理定位在 Windows 7/XP 上的 Safari 5.x 上不起作用
【发布时间】: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


【解决方案1】:

尝试打开您的无线网络。看来 Safari 依赖于 wi-fi 连接才能工作。 我遇到了完全相同的问题,打开了我的 wi-fi 连接,它运行良好。

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

【讨论】:

  • 我的 Wi-Fi 一直处于开启状态
  • 那些说这是其他堆栈溢出问题的重复并且您需要打开 Wifi 的人是错误的。如果这是 Mac 上的 Safari 5,那就可以了。但这个问题是针对 Windows 上的 Safari 5 的。我也无法通过打开 Wifi 或任何其他方式在 Windows 上的 Safari 5 上获取地理位置。
  • 确实很奇怪,但打开我的wifi连接时它确实对我有用!但这不是解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多