【发布时间】:2013-02-04 08:03:26
【问题描述】:
我正在为 ios 和 android 构建 phoneGap、jQuery 移动应用程序我正在使用 cordova 2.3 使用 XCode 4.5.2 和 SDK 6,问题是当尝试在 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");
};
【问题讨论】:
-
尝试删除“onload=..”可能与双事件处理程序 stackoverflow.com/questions/13196130/…
-
我试过了,但它不起作用,我尝试在没有调用函数的情况下使用“eventListener”,它也不起作用,@ClintonWard 所以如果你有任何其他想法,我会很高兴考虑他们。
-
也许对于 jquery-mobile 你应该使用 $(document).on('pageinit', function() {});
-
jQuery(document).on('pageinit',function(){});将导致甚至不允许页面加载基本 html 元素的错误;它将显示一个空白页。所以还有其他想法。
-
您引用的是 2 个 jquery 文件吗?因为它不在上面的代码中
标签: cordova jquery-mobile ios6