2014-06-19 68 views
0

我在iOS 7.1(包括模擬器和設備)PhoneGap 3.5中有一個奇怪的問題。 MacOSX中的FireFox中出現了非常相似(可能相同)的問題。Phonegap 3.5.0不加載本地javascript文件第一次加載頁面

當我點擊一個調用JavaScript函數的jQuery定義的按鈕時,它會失敗,因爲該函數沒有定義。如果我加載Safari的調試器並查看頁面 - <head>中缺少包含功能的<javascript>行。

但是,如果我點擊Safari調試器中的「重新加載」圖標,那麼所有的JavaScript文件都會被加載並定義函數。所以 - 這告訴我文件都在那裏。

同樣的情況發生在FireFox中 - 第一次加載頁面時沒有控制檯消息出現;重新加載後,他們工作正常。

它聞起來像某種競爭條件或加載順序問題。但是,如果它是加載順序 - 爲什麼JavaScript不會引發錯誤?

<head> 
    <meta charset="utf-8"/> 
    <meta name="viewport" content="width=device-width, initial-scale=1"/> 
    <title>ABR Practice Examination2</title> 
    <script type="text/javascript" src="../js/jquery/jquery-1.11.0.min.js"></script> 
    <script type="text/javascript" src="../js/jquery/jquery.mobile-1.4.2.min.js"></script> 
    <script type="text/javascript"> 
     console.log("Before jquery.mobile-1.4.2.min.css load"); 
    </script> 
    <link rel="stylesheet" href="../js/jquery/jquery.mobile-1.4.2.min.css"/> 
    <script type="text/javascript"> 
     console.log("Before qm-demos.css load"); 
    </script> 
    <link rel="stylesheet" href="../css/jqm-demos.css"/> 
    <link rel="shortcut icon" href="../favicon.ico"/> 
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:300,400,700"/> 
    <script type="text/javascript"> 
     console.log("Before cordova.js load"); 
    </script> 
    <script type="text/javascript" src="../cordova.js"></script> 
    <script type="text/javascript"> 
     console.log("Before index.js load"); 
    </script> 
    <script type="text/javascript" src="../js/index.js"></script> 
    <script type="text/javascript"> 
     console.log("Before DicomStudy.js load"); 
    </script> 
    <script type="text/javascript" src="../plugins/DicomStudy.js"></script> 
    <script type="text/javascript"> 
     console.log("Before ABRUtils.js load"); 
    </script> 
    <script type="text/javascript" src="../js/ABRUtils.js"></script> 

</head> 

因此 - 第一次加載頁面時 - 控制檯中沒有顯示任何控制檯消息。如果我重新加載 - 全部顯示。我錯過了什麼?

+0

我首選加載cordova.js。此外,請確保您在使用cordova/plugins之前等待deviceReady啓動。並刪除所有的console.log。 – gro

+0

Arg。這是非常愚蠢的。我從另一個(工作)應用程序複製了我的JavaScript文件,並且在兩個不同的文件夾中有兩個index.js文件 - 它們的內容完全不同。一旦我把正確的文件放在一切正常工作。對不起浪費人們的時間。 –

+0

http://stackoverflow.com/questions/24528269/js-and-css-is-not-detects-when-new-page-loads – Anup

回答

0

這聽起來像

  1. 您可能沒有正確的編譯和錯誤cordova.js正在加載
  2. deviceReady沒有正確定義,所以頁面不知道開始