我有一个使用JQM 1.3.0& PhoneGap的。该应用程序进行Web服务调用,并使用AJAX填充所有页面的内容。在浏览器中开发并直接调用我的脚本时,一切正常:
applicationScripts()
function applicationScripts(){
$(document).on("pageinit", "#page1, #page2, #page3, #page4, #page5", function() {
$.ajax({
//make call and populate content.
})
});
}
但是,一旦我从设备监听器内部调用该函数,#page1就无法获取数据。第2-5页工作正常。 (我也尝试将事件监听器嵌套在<body onload="onLoad()">
函数中,但结果相似。)
document.addEventListener('deviceready', applicationScripts, false);
function applicationScripts(){
$(document).on("pageinit", "#page1, #page2, #page3, #page4, #page5", function() {
$.ajax({
//#page1 not getting content.
})
});
}
这是我的文件的负责人。我的所有脚本都在application.js文件中。
<script type="text/javascript" src="js/cordova.ios.js"></script>
<script src="js/jquery-1.9.1.min.js"></script>
<script src="js/jquery.mobile-1.3.0.min.js"></script>
<script src="js/application.js" ></script>
我不知道某些文件/事件在其他人之前加载是否是时间问题,但似乎我已经尝试了所有可能的脚本命令组合和不同的方式来调用&#39; deviceready&# 39 ;.任何帮助表示赞赏!
答案 0 :(得分:0)
我已完成了几个PhoneGap项目,我从未在deviceready
函数中绑定页面事件。
只需绑定js文件中的页面事件即可。它工作得很好。毕竟我在生产中运行了3个PhoneGap项目,并且由于这个原因,没有任何项目报告了问题。
我在我的项目中使用deviceready
函数来禁用后退按钮,而不是任何页面等等。
希望能帮到你。
答案 1 :(得分:0)
您可以尝试以下代码:
var deviceReadyDeferred = $.Deferred();
var jqmReadyDeferred = $.Deferred();
document.addEventListener("deviceReady", deviceReady, false);
function deviceReady() {
deviceReadyDeferred.resolve();
}
$(document).one("mobileinit", function () {
jqmReadyDeferred.resolve();
});
$.when(deviceReadyDeferred, jqmReadyDeferred).then(doWhenBothFrameworksLoaded);
function doWhenBothFrameworksLoaded() {
$(document).on("pageinit", "#page1, #page2, #page3, #page4, #page5", function() {
$.ajax({
//Do something here
})
});
}