2012-11-06 50 views
0

我想完成的不是記錄歷史記錄中的某些頁面,所以後退按鈕不會將您帶回上一頁。JQuery Mobile Override Change頁面

例如,如果頁面登錄頁面或註冊頁面,不記錄它,否則記錄頁:

function changePage(page) 
if(page == 'login' || page == 'register') { 

$.mobile.changePage("#" + page , { 
    transition: "pop", 
    reverse: false, 
    changeHash: false 
}); 

} else { 
$.mobile.changePage("#" + page, { 
    transition: "pop", 
    reverse: true, 
    changeHash: true 
}); 
} 

}//end change page 

但我想在全球的方式ovveride的mobile.changePage功能,所以它檢查每個被調用的函數。任何人都可以給我任何想法如何做到這一點?

回答

0

您可以用自定義功能myChangePage()替換在代碼changePage()所有電話和擴展jQuery Mobile的,如下圖所示:

$(document).bind('mobileinit', function(){ 

    $.mobile.myChangePage = function(page, options){ 

    if ($.inArray(page.substr(1), ['login', 'register'])) 
    { 
     $.extend(options, { 
     reverse: false, 
     changeHash: false 
     }); 
    } 

    $.mobile.changePage(page, options); 

    }; 
}); 

用法示例:

$.mobile.myChangePage('#login'); 
0

我將節省的功能將頁面更改爲變量,然後如果在某些情況下您不需要覆蓋該功能,則可以直接返回該功能:

var cp = $.mobile.changePage; 
$.mobile.changePage = function(to, options) { 
    if(youdontneedtoverride) { 
     cp(to, options); 
    } else { 
     .... 
    } 
}