0

我正在为 ios 和 android 构建 phoneGap、jQuery 移动应用程序我正在使用带有 XCode 4.5.2 和 SDK 6 的 cordova 2.3,问题是当尝试在 ipad3(使用 ios 6.0.1)上运行该应用程序时,它无法正常运行,即使它在 ipad 2 上运行良好(使用 ios 5.1.1)

我的 HTML 页面:

<script src="js/cordova.js"></script>
<script src="js/myjs.js"></script>
<script>
 function init(){
  document.addEventListener("deviceready",getUserProfiles,false);
  }
</script>
</head>
<body onload="init()">

“getUserProfiles”函数是“myjs.js”中的一个函数,它有一个回调函数,如下所示:

function getUserProfiles(){
  readFile("directory","filename",callBackFunc);
}
function callbackfunc (){
 //do stuff
}

这不适用于 ipad 3,但适用于 ipad 2,在 ipad3 上运行应用程序时的另一件事,如果我关闭应用程序然后重新输入它,每次我关闭它并重新打开它时,功能都会一个接一个地触发。

我想我的代码哪里出错了;

我已经研究了任何与我的问题相近的东西来构建它,我唯一得到的是“addEventListener”在 ios 6 上没有很好地触发我已经改变了很多次但仍然有相同的结果。

发生的情况是页面显示正常,但在 ipad3 上运行时未触发 java Script 和 JQuery 函数,因此页面看起来是空的,因为所有内容都是在页面加载或设备准备好时动态创建的。

提前谢谢。

*更新:readFile函数*

function readFile(directoryName,fileName,callBackFunc) {
alert("read = "+directoryName+"file = "+ fileName);
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
                         var tmpPath = directoryName;
    fileSystem.root.getDirectory(tmpPath, {create: false, exclusive: false}, function (dirEntry) {
                                 var directoryReader = dirEntry;
        directoryReader.getFile(fileName, {create: false, exclusive: false}, function (fileEntry){
                                gotFileEntry(fileEntry,callBackFunc);
        }, fail);
    }, fail);
}, fail);
}


function gotFileEntry(fileEntry,callBackFunc) {
fileEntry.file(function (file){
               gotFile(file, callBackFunc);
}, fail);
 }

function gotFile(file,callBackFunc){
readAsText(file,callBackFunc);
}
function readAsText(file, callBackFunc) {
var reader = new FileReader();
reader.onloadend = function(evt) {
    console.log("Read as text");
    console.log(evt.target.result);
    jsonobject3 = evt.target.result;
    callBackFunc(evt.target.result);
};
reader.readAsText(file);
}

var fail = function(evt) {
 console.log("error in read from nested directory");
};
4

1 回答 1

0

很抱歉,我不得不就自己的问题发表答案;

我在 IOS 6 上发现了什么

 document.addEventListener('deviceready',deviceReady, false)

当应用程序打开时将被触发一次,“这就是我的应用程序出现故障的原因”。

所以我所做的是添加

addEventListener
第一页上的功能,并使用

jQuery.changePage('page.html')

浏览页面并插入我想要在页面打开时触发的任何 JS 代码的方法

  data-role="page" 
我的 html 页面中的元素,它将表现为
addEventListener
功能如下:

<div data-role="page">
    <script>
        //my script
    </script>
    <!-- the rest of my HTML element here -->
</div>

我不知道这是否是最好的方法,但对我来说效果很好。

所以如果有人有更好的主意,请告诉。

于 2013-02-14T13:11:08.947 回答