我正在玩我的第一个PhoneGap/Android应用程序,在从PhoneGap/Cordova事件触发$.mobile.changePage()
时遇到问题。
我已经更新了代码,而之前它会触发一次。现在它根本没有触发,但更接近于应该如何进行。
这是我的代码:
$(document).on('pageinit', function() {
document.addEventListener("searchbutton", onSearchKeyDown, false); //never fires
document.addEventListener("menubutton", onMenuKeyDown, false); //never fires
alert("triggered"); //does fire
});
// search button press
function onSearchKeyDown() {
//change to search page
alert("search");
$.mobile.changePage("#page4", {transition: "pop"});
}
//menu button press
function onMenuKeyDown() {
//change to start page
alert("menu");
$.mobile.changePage("#page1", {transition: "pop"});
}
使用pageInit()
,而不是$(document).ready()
。
请参阅此处的文档:
在jQuery中学习的第一件事是调用$(document).ready()函数,以便在DOM已加载。但是,在jQueryMobile中,Ajax用于加载导航时将每个页面的内容放入DOM中,并且DOM已就绪处理程序只对第一页执行。只要加载并创建新页面后,您可以绑定到pageinit事件。本页底部将对此事件进行详细解释。
如果其他人有这个问题,下面是解决方案。通过https://stackoverflow.com/a/9739986/799876
从cordova.js的底部向上几行,有一行
channel.onNativeReady.subscribe(_self.boot);
将其更改为
channel.onNativeReady.subscribeOnce(_self.boot);
对我来说,这修复了phonegap&jQuery Mobile。