PhoneGap 1.5 "menubutton" и "searchbutton" с помощью jQuery Mobile - PullRequest
1 голос
/ 19 марта 2012

Я играю с моим первым приложением PhoneGap / Android, и у меня возникают проблемы при запуске $.mobile.changePage() из события PhoneGap / Cordova.

Я обновил код, тогда как раньше он запускался один раз.Теперь он вообще не срабатывает, но ближе к тому, как это должно быть сделано.

Вот мой код:

    $(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 ]

2 голосов
/ 19 марта 2012

Используйте pageInit(), а не $(document).ready().

См. Документацию здесь :

Первое, чему вы научитесь в jQuery, это вызвать код внутри $ (document) .ready (), поэтому все будет выполнено, как только DOM загружен. Однако в jQuery Mobile Ajax используется для загрузки содержимое каждой страницы в DOM во время навигации, и DOM готов Обработчик выполняется только для первой страницы. Выполнять код всякий раз, когда Новая страница загружается и создается, вы можете привязать к событию pageinit. Это событие подробно объясняется внизу этой страницы.

1 голос
/ 20 марта 2012

Вот решение, если у кого-то еще есть эта проблема. через https://stackoverflow.com/a/9739986/799876

В нескольких строках от основания cordova.js есть строка

channel.onNativeReady.subscribe(_self.boot);

Измените его на

channel.onNativeReady.subscribeOnce(_self.boot);

Для меня это исправило события меню и кнопки поиска с помощью phonegap & jQuery Mobile.

...