【问题标题】:PhoneGap 1.5 "menubutton" and "searchbutton" with jQuery MobilePhoneGap 1.5 带有 jQ​​uery Mobile 的“菜单按钮”和“搜索按钮”
【发布时间】:2012-04-04 05:46:52
【问题描述】:

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

【问题讨论】:

标签: javascript jquery android jquery-mobile cordova


【解决方案1】:

使用pageInit(),而不是$(document).ready()

查看文档here

在 jQuery 中学习的第一件事是在 $(document).ready() 函数,所以一切都会在 DOM 已加载。然而,在 jQuery Mobile 中,Ajax 用于加载 导航时将每个页面的内容放入 DOM,并且 DOM 准备就绪 处理程序仅对第一页执行。每当一个 新页面加载并创建后,您可以绑定到 pageinit 事件。 此事件在本页底部有详细说明。

【讨论】:

  • 我已经阅读了 pageinit,并更新了我的代码以使用它。但现在它有 0 个功能。
  • 您是否尝试过将<body onload="onLoad()"> 添加到页面,然后在那里初始化PhoneGap 事件处理程序?已经有一段时间了,但是 PhoneGap 和 jQuery Mobile 有不同的做事方式。有可能当 jQuery Mobile 准备好 (paeginit) 时,PhoneGap 还没有准备好。反之亦然。
  • 是的,这是我尝试的第一种方法,例如 phonegap 的网站。它产生与 $(document).ready() 相同的结果,按钮工作一次。
【解决方案2】:

如果其他人有这个问题,这里是解决方案。 通过https://stackoverflow.com/a/9739986/799876

从cordova.js底部往上几行,有一行

channel.onNativeReady.subscribe(_self.boot);

改成

channel.onNativeReady.subscribeOnce(_self.boot);

对我来说,这通过 phonegap 和 jQuery Mobile 修复了 menubutton 和 searchbutton 事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-15
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    相关资源
    最近更新 更多