我有以下ondeviceready代码:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
getLocation();
}
如果我只是调用getLocation();没有事件监听器它可以正常工作(除了双位置服务提示)。
但是,如果我调用getLocation();在上面的代码中它失败了。特别是这个函数永远不会返回任何东西和时间:geoPosition.getCurrentPosition(geoSuccess,geoError,{timeout:7000});
代码在'ondeviceready'之外工作的原因是什么,但是当我在上面的代码中调用它时失败了?
思想?
这是我的getLocation函数:
enter code here
function getLocation(){
var latitude = localStorage.getItem('Lat');
var longitude = localStorage.getItem('Long');
if (geoPosition.init()) {
geoPosition.getCurrentPosition(geoSuccess, geoError, {timeout:7000});
}
function geoSuccess(p) {
console.log("Found you at latitude " + p.coords.latitude + ", longitude " + p.coords.longitude);
}
function geoError() {
console.log("Could not find you!");
}
}
已编辑 - 已添加</ p>
您可以在以下位置查看我的代码:http://www.classhoppers.com/app/index.html
如果您在Chrome中运行上面的页面,则可以使用。您可以打开Web检查器并查看本地存储更新Lat / Long
如果您模拟iPhone5,您将看到Lat / Long永远不会更新。
以下是我发现的内容:
调用我的函数:getLocation();独自工作
在OnDeviceReady中调用它不起作用
首先,我检查它是否是移动浏览器然后运行onDeviceReady。
if(SmartPhone.isAny() == true){
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
getLocation();
}
}
else {
console.log('browser');
getLocation();
}
以下是我的getLocation()函数的链接:http://www.classhoppers.com/app/js/geoLocation.js
答案 0 :(得分:0)
尝试在index.html文档的头部手动插入cordova.js的脚本标记。我怀疑你错过了这个剧本。
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>