2014-06-19 117 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没有正确定义,所以页面不知道开始