我正在使用我的第一个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"});
}
答案 0 :(得分:2)
使用pageInit()
,而不是$(document).ready()
。
请参阅文档here:
你在jQuery中学到的第一件事就是在里面调用代码 $(document).ready()函数,所以一切都会尽快执行 DOM已加载。但是,在jQuery Mobile中,Ajax用于加载 导航时每个页面的内容都放入DOM中,并准备好DOM 处理程序仅对第一页执行。每当执行代码时 加载并创建新页面,您可以绑定到pageinit事件。 此事件在本页底部详细说明。
答案 1 :(得分:1)
如果其他人有这个问题,这是解决方案。 通过https://stackoverflow.com/a/9739986/799876
从cordova.js底部向上几行,有一行
channel.onNativeReady.subscribe(_self.boot);
将其更改为
channel.onNativeReady.subscribeOnce(_self.boot);
对我来说,这修复了menubutton和searchbutton事件与phonegap& jQuery Mobile。