Jquery移动功能运行前设备准备好了
jquery mobile function running before the device ready
我正在使用phonegap和jQuery Mobile构建一个android应用程序。
从phonegap文档中,device ready函数需要在其他任何操作之前被触发。
我不知道为什么,但是
$(document).on("pageshow", "#keeperList", function(){
listAllKeepers();
});
先开火
我不能发布完整的代码,因为它太多了。
<script type="text/javascript" src="js/cordova.js"></script>
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/jquery.mobile-1.3.1.js"></script>
<script type="text/javascript" src="js/db.js"></script>
<script type="text/javascript">
var db;
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
alert("PhoneGap is ready!");
db = window.openDatabase("rentManag", "3.7.11", "Rent Manag", 100000000);
db.transaction(createTable, errorCB, successCB);
}
$(document).on('pageshow', "#keeperList", function () {
listAllKeepers();
});
</script>
如果你将Phonegap与JQuery Mobile结合使用,你必须等待JQuery Mobile的" pageccreate "和Phonegap的"deviceready"事件。这确保了两个框架都被正确加载。你应该这样做:
var jqmReady = $.Deferred();
var pgReady = $.Deferred();
// jqm ready
$(document).bind("pagecreate", jqmReady.resolve);
// phonegap ready
document.addEventListener("deviceready", pgReady.resolve, false);
$(document).on('pagecreate',function(event,data)
{
});
// all ready :)
$.when(jqmReady, pgReady).then(function () {
listAllKeepers();
});
要回答您的问题,请检查下面的代码。这是我自己的变通方法。这可能不是最好的解决方案,但它可以完成工作。
它是做什么的:-在设备就绪时,它将值设置为true。-在页面加载时,您访问一个等待该值为真的函数。如果不是,它循环,直到它是。-这可以防止错误的东西没有被PhoneGap加载。
// device ready
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
// let the function "isDeviceReady" know that the event "deviceready" has been fired
window.deviceReady = true;
}
// callback function to check if device is ready
function isDeviceReady(value, action) {
if (window.deviceReady === true) {
switch (action) {
case "listAllKeepers":
listAllKeepers();
break;
case "listAllKeepersValue": // if you had a value
listAllKeepers(value);
break;
}
} else {
window.setTimeout("isDeviceReady('"" + value + "'", '"" + action + "'");", 100);
}
}
// do stuff on page show
$(document).on('pagebeforeshow', '#yourpageid', function (event, data) {
isDeviceReady('', listAllKeepers);
});
- Electron:Express.js服务器在Mongo数据库'It’准备好了
- 我怎么知道Jqgrid已经准备好了
- Javascript+HTML中的日期选择器准备好了吗?(需要:DD、MM、YY的单独字段加上日历选择器)
- 杜兰达尔.js文件准备好了
- Jquery文档准备好了函数声明
- jquery在文档上发布准备好了
- JSON时调用函数.Parse() 已经准备好了
- 在页面底部加载脚本是否保证在执行任何脚本之前DOM都准备好了
- FileReader JS Api在它之前调用Fire'It’准备好了
- 为什么Internet Explorer有时会在数据'It’准备好了
- Knockback.js制作准备好了吗
- getElementById有时为null.已经试过了.加载完毕.准备好了
- javascript作用域和jquery's$(文档).准备好了
- Jquery(美元).val ();准备好了,不工作了
- jQuery data()在窗口.加载和文档.准备好了,没有定义
- Jquery滑块加载图像时,准备好了占位符
- Javascript函数不能在jquery $(document)中工作.准备好了
- 我如何选择元素后添加的类名文档准备好了
- 如何附加点击事件在运行时,当我有一个数组中的所有id得到填充时,文档准备好了
- Jquery移动功能运行前设备准备好了