Phonegap + jquery mobile + backbutton + pageinit

时间:2013-08-08 07:53:27

标签: cordova

我正在使用jquery mobile(1.3.1)开发一个Phonegap(cordova 2.5.0)应用程序。我关于按下后退按钮后的pageinit功能行为的问题。第一次导航到(例如)静态页面时,pageinit正常触发。之后,当按下后退按钮并再次从菜单页面导航到相同的静态页面时,pageinit不会再触发。这种行为可能导致什么原因?

  • Jani

    //PAGEINIT
    $("#staticsPage").live("pageinit", function(){
        alert(staticsPage Init);
        init_statistics();
    });
    
    
    
     document.addEventListener("deviceready", appReady, false);
    
    //HANDLE BACK BUTTON
    function appReady(){   
        document.addEventListener("backbutton", function(e){
            if($.mobile.activePage.is('#menuPage'))
            {
                e.preventDefault();
                navigator.app.exitApp();
            }
    
            else if($.mobile.activePage.is('#staticsPage'))
            {
            e.preventDefault();
            $.mobile.changePage($("#menuPage"));
            }
            else 
            {
                 navigator.app.backHistory();
            }
        }, false);  
    
      } 
    

1 个答案:

答案 0 :(得分:0)

只有在将页面加载到DOM中时才会触发pageinit事件,因此只会触发一次。

  

在初始化页面上触发,初始化后发生

我会使用pageshow事件。导航到页面时会触发此操作:

  

转换动画完成后在“toPage”上触发。

所以,请尝试使用此代码:

$('#staticsPage').on('pageshow', function(){
    alert(staticsPage Init);
    init_statistics();
});

document.addEventListener("deviceready", appReady, false);

//HANDLE BACK BUTTON
function appReady()
{   
    document.addEventListener('backbutton', function(e){
        var activePage = $.mobile.activePage.attr('id');

        if(activePage == 'menuPage')
        {
            e.preventDefault();
            navigator.app.exitApp();
        }
        else if(activePage == 'staticsPage')
        {
            e.preventDefault();
            $.mobile.changePage('#menuPage');
        }
        else 
        {
             navigator.app.backHistory();
        }
    }, false);
}

检查here以获取jQuery Mobile事件列表。