这只是突然发生的事情:我的老板在一次短途出差时拿走了她的手机和应用程序的开发副本,并在出差几天后报告了这个错误。我以为我已经对从服务器返回的 json 进行了一些更改并且破坏了它,但是现在我将它恢复了,它似乎与我在服务器上的工作完全无关。
这是我在控制台中收到的错误消息:
Error in success callback: Geolocation3 = ReferenceError: Can't find variable: jQuery
或者
Error in success callback: Geolocation3 = ReferenceError: Can't find variable: $
很明显,它就是找不到 jQuery。它执行'deviceReady'就好了。但它在模拟器中运行良好。我对 jQM 和 jQ 都使用 jQuery CDN,并且可以通过浏览器访问两者。
那么给了什么?为什么它会突然无法找到 jQuery - 并且只能在设备上找到?
我在网上看到很多类似的问题,但没有一个有明确的答案。有些是“干净和重建”,有些是简单的错别字……但没有什么。这不是位置权限问题。这不是连接问题。这不是网址白名单问题。
一如既往地感谢您的帮助。谢谢!
我将在下面提供尽可能多的代码:
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<title>XXXXXX</title>
<link rel="stylesheet" href="css/jquery.mobile.css" />
<link rel="stylesheet" href="css/themes/app-2012-11-30.css" />
<link rel="stylesheet" type="text/css" href="spec/lib/photoswipe/photoswipe.css" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<!-- cordova -->
<script src="cordova-2.1.0.js" type="text/javascript"></script>
<!-- jquery -->
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<!-- Google -->
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<!-- Add ons -->
<script src="spec/lib/photoswipe/lib/klass.min.js"></script>
<script src="spec/lib/photoswipe/code.photoswipe.jquery-3.0.5.js"></script>
<!-- Objects -->
<script src="js/map.js" type="text/javascript"></script>
<script src="js/prefs.js" type="text/javascript"></script>
<script src="js/search.js" type="text/javascript"></script>
<script src="js/storage.js" type="text/javascript"></script>
<script src="js/helpers.js" type="text/javascript"></script>
<script src="js/player.js" type="text/javascript"></script>
<script src="js/record.js" type="text/javascript"></script>
<script src="js/connection.js" type="text/javascript"></script>
<script src="js/location.js" type="text/javascript"></script>
<script src="js/header-footer.js" type="text/javascript"></script>
<script src="js/featured.js" type="text/javascript"></script>
<script src="js/list.js" type="text/javascript"></script>
<script src="js/index.js" type="text/javascript"></script>
<script type="text/javascript">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady(){
console.log('device ready');
storageSetUp();
checkConnection();
getLocation();
showFeatured();
getSetUp();
clUpdate();
$(document).bind( 'mobileinit', function(){
$.mobile.defaultPageTransition = "none";
$.mobile.loader.prototype.options.textVisible=false;
$.mobile.loader.prototype.options.html = '<div class="loading"></div>';
$.mobile.pushStateEnabled = false;
});
$(document).bind('pagebeforeshow',function(){
setHeaderFooterInfo();
});
}
</script>
getLocation 位于 .js 文件中。您在那里看到函数 getStreetAddress,它包含一个 ajax 调用($.ajax 或 jQuery.ajax),这就是它给出错误的地方。
function getLocation()
{
gLAttempt++;
navigator.geolocation.getCurrentPosition(onLocationSuccess, onLocationError);
}
// onSuccess Geolocation
function onLocationSuccess(position)
{
var lat = position.coords.latitude;
var lng = position.coords.longitude;
Storage.location.lat = parseFloat(lat.toFixed(6));
Storage.location.lng = parseFloat(lng.toFixed(6));
Storage.location.coords = lat.toFixed(6) + ',' + lng.toFixed(6);
if(ajax_rg == null){
getStreetAddress(Storage.location.coords);
}
}