2013-04-08 58 views
1

這只是突然開始發生:我的老闆帶着她的手機應用程序的開發副本短途出差,並報告這個錯誤這次旅行還有幾天。我認爲我已經對從服務器返回的json做了一些修改,但是現在我又恢復了它,這似乎與我在服務器上的工作無關。PhoneGap/Cordova:罰款模擬器,突然沒有在設備上工作:找不到jQuery

以下是錯誤消息我在控制檯中看到:

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); 
    } 
} 

回答

5

2種,我能想到的可能的方案:

  1. iOS設備的情況下使用的文件/文件夾名稱敏感。確保您爲所有添加的文件和文件夾使用相同的大小寫。請記住,iOS模擬器不區分大小寫。所以不區分大小寫的文件引用將在模擬器上工作,但不會在設備中工作。

  2. 從CDN中刪除jQuery引用並將其添加到本地。當您打包應用程序並進行部署時,使用CDN並沒有什麼意義。它可能發生,你onDeviceReady事件被觸發,但jQuery的文件不會從CDN下載...

+0

就是這樣。非常感謝你,我真的把頭撞在那個牆上。我不明白如何突然下載比以前更長的時間。但是你現在有了。謝謝! – dgig 2013-04-09 14:29:44

+0

噢,「就是這樣」我的意思是在本地保留這些文件,而不是試圖通過CDN下載它們。再次感謝。 – dgig 2013-04-24 19:28:43

1

最近,我有他同樣的問題。我花了幾個小時試圖弄清楚什麼是錯誤的,當我將新文件與舊文件進行比較時,我意識到一個html文件名是sidebar.html,而它在代碼中被稱爲sideBar.html

區分大小寫是唯一的問題。

相關問題