我正在开发一个使用 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一模一样,没有 map ,网页一直是灰色。
通过一些调试(警报(“我在这里”):-) 似乎在 Safari 中,它确实执行了 navigator.geolocation.getCurrentPosition(myCallback),但它似乎永远不会到达 myCallback ... 好像它永远不会从 getCurrentPosition 返回。我还看到,如果我让浏览器窗口整夜打开,当我早上回到它时,警报和 map 就会出现(尽管并非总是如此)。我还尝试添加了一个 errorCallback navigator.geolocation.getCurrentPosition(myCallback, errorCallback) 但它也从未执行过,再次表明它永远不会从 getCurrentPosition 调用中返回。
为什么会这样?
编辑: 只是做了一些更多的测试,我添加了超时选项 (navigator.geolocation.getCurrentPosition(myCallback, errorCallback, {timeout: 5000});) ,事实上它总是超时,不管我设置多高所以它永远不会从 Google 地理定位服务返回,但为什么呢?
最佳答案
尝试打开您的 Wi-Fi。 Safari 似乎依赖于 Wi-Fi 连接才能工作。 我遇到了完全相同的问题,打开我的 Wi-Fi 连接后它运行良好。
我现在正在研究如何检测此问题 - 如果我找到解决方案,将会更新
关于jquery - 地理定位不适用于 Windows 7/XP 上的 Safari 5.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3686630/