使用jQuery Mobile的PhoneGap 1.5“menubutton”和“searchbutton”

时间:2012-03-19 17:55:16

标签: javascript jquery android jquery-mobile cordova

我正在使用我的第一个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"});
    }

2 个答案:

答案 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。