PhoneGap 1.5 "menubutton" 和 "searchbutton" with jQuery Mobile



我正在玩我的第一个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。

最新更新