我已经使用 JQM (1.3.1)、jQuery(1.9)、CSS3 和 javascript 编写了一个 webapp,现在我正处于第二阶段,我正在使用 phone gap (2.7) 将此应用程序移植到 Apple 商店(目标 iOS(6.1)/ iPhone5 - 问题可以在 iPhone 4S/iOS 6.0 上重现
如下所示的我的地理位置代码在浏览器中执行时运行良好。
var geoOptions = { 'enableHighAccuracy': true, 'timeout': 10000, 'maximumAge': 0 };
navigator.geolocation.getCurrentPosition(geoSuccess, geoError, geoOptions);
function geoSuccess(postion)
{
//on success code here
}
function geoError(error)
{
//on error code here
}
但是,一旦通过phonegap,我的应用程序就会两次请求用户访问位置服务的权限,即它显示了两次弹出窗口。因此,为了解决我在stackoverflow上的许多解决方案中建议的使用下面的代码。
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(geoSuccess, geoError,geoOptions);
}
$(function() {
document.addEventListener("deviceready", onDeviceReady, false);
});
这解决了弹出问题,但又开始了一个新问题。
问题:如果位置服务被禁用,我的代码会添加 deviceready 侦听器并等待 deviceready 事件触发,但该事件永远不会触发,它只是坐在那里。如果定位服务已打开,它将按预期工作。
有没有人遇到过这个问题,你能告诉我你做了什么来解决它,请我已经投入了一天值得调试和研究的时间。
亲切的问候,谢谢。