0

我试图完成的不是在历史记录中记录某些页面,所以后退按钮不会带你回到上一页。

例如,如果该页面是登录页面或注册页面,则不记录,否则记录页面:

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

但我想以全局方式覆盖 mobile.changePage 函数,以便检查每个函数被调用。谁能给我任何想法如何做到这一点?

4

2 回答 2

0

我会将更改页面的功能保存到一个变量中,然后如果在某些情况下您不需要覆盖该功能,您可以直接代理回该功能:

var cp = $.mobile.changePage;
$.mobile.changePage = function(to, options) {
    if(youdontneedtoverride) {
        cp(to, options);
    } else {
        ....
    }
}
于 2013-08-28T18:08:37.313 回答
0

changePage()您可以使用自定义函数替换代码中的所有调用myChangePage()并扩展 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');
于 2012-11-06T21:54:42.807 回答