Javascript添加到历史记录中

Javascript添加到历史记录中,javascript,Javascript,我有一个基于ajax的网站&我已经成功地添加了对back按钮的支持,这很好。我的问题是,当我回去时,我不能前进 如何在历史记录中添加未来项目?还是启用前进按钮 是否存在操作“前进”按钮的事件 哈斯邦图书馆 function hashbang(pages){ this.currentPage = []; this.currentPageIndex = 0; this.displayer = true; var that = this; this.setup = function(){

我有一个基于ajax的网站&我已经成功地添加了对back按钮的支持,这很好。我的问题是,当我回去时,我不能前进

如何在历史记录中添加未来项目?还是启用前进按钮

是否存在操作“前进”按钮的事件

哈斯邦图书馆

function hashbang(pages){
this.currentPage = [];
this.currentPageIndex = 0;
this.displayer = true;
var that = this;
this.setup = function(){

    N$(window).event('popstate', function(node, event){
        console.log('pop');
        document.body.style.display = "none";
        that.displayer = false;
        that.removeResources();
        that.currentPageIndex++;
        //var hash = (event.state)? event.state.page : window.location.hash.slice(1).replace('!','');
        console.log(that.currentPage[that.currentPage.length - 1 - that.currentPageIndex]);
        if(pages[that.currentPage[that.currentPage.length - 1 - that.currentPageIndex]['src']]){
            that.currentPage[that.currentPage.length - 1 - that.currentPageIndex]['params']['hash'] = '#!' + that.currentPage[that.currentPage.length - 1 - that.currentPageIndex]['params']['hash'];
            that.changePage(that.currentPage[that.currentPage.length - 1 - that.currentPageIndex]['src'], that.currentPage[that.currentPage.length - 1 - that.currentPageIndex]['js'], that.currentPage[that.currentPage.length - 1 - that.currentPageIndex]['into'], that.currentPage[that.currentPage.length - 1 - that.currentPageIndex]['params'], true);
        }
    });

}
this.state = function(page_, update){
    N$.ajax('../php/ajax/AJAX_BASE.php', 'post', {}, function(AJAX_BASE){//get base
        if(window.history.pushState && window.history.replaceState){//compatibility check
            if(!update){
                if(window.history.state != null){
                    if(window.history.state.page != page_){// if page is not page_
                        window.history.pushState({page: page_}, '', AJAX_BASE+page_);//push page into history
                    }else{
                        try{
                            window.history.replaceState({page:page_}, '', AJAX_BASE+page_);
                        }catch(error){

                        }
                    }
                }else{
                    window.history.pushState({page: page_}, '', AJAX_BASE+page_);
                }
            }else{
                window.location.hash = '!'+page_;
            }
        }
    }, true);
}
this.loadPage = function(src, func_array, into, params, prevent_push){
    console.log('loadPage:::: ' + src);
    if(typeof params != typeof {})
        params = {};
    if(params['hash'] == undefined){
        params['hash'] = window.location.hash;
    }else{
        params['hash'] = params['hash'];
    }
    this.state(src + params['hash'], false);

    params['hash'] = params['hash'].replace(/#!/g, "-").slice(1);

    var mobile = ( (browser)?( (browser.loaded_mobile)? browser.loaded_mobile : false ): false);
    N$.loadCSS(src + '_' +  mobile + '.css', function(){
        N$.ajax(src + '_' +  mobile + '.php', 'POST',params, function(page_content){
            N$(into).innerHTML(page_content);
            if(func_array['initialize'])
                func_array['initialize'](params);
            console.log('attempted::' + src + '_' +  mobile + '.js');
            N$.loadJS(src + '_' +  mobile + '.js', function(){
                console.log('loaded::' + src + '_' +  mobile + '.js');
                if(func_array['execute'])
                    func_array['execute'](params);
            });
            if(func_array['terminate'])
                func_array['terminate'](params);
            if(!that.displayer)
                document.body.style.display = "block";
        }, false);
    });
    if(!prevent_push || prevent_push == undefined || prevent_push == null){
        console.log('page pushed');
        var pusher = {
            'src': src,
            'params': params,
            'js': func_array,
            'into': into
        };
        console.log(pusher);
        that.currentPage.push(
            pusher
        );
    }
}
this.loadPartial = function(src, func_array, into, params){
    src = '/i/partials/' + src;
    if(typeof params != typeof {})
        params = {};
    var mobile = ( (browser)?( (browser.loaded_mobile)? browser.loaded_mobile : false ): false);
    N$.loadCSS(src + '_' +  mobile + '.css', function(){
        N$.ajax(src + '_' +  mobile + '.php', 'POST',params, function(page_content){
            N$(into).innerHTML(page_content);
            if(func_array['initialize'])
                func_array['initialize']();
            N$.loadJS(src + '_' +  mobile + '.js', function(){
                if(func_array['execute'])
                    func_array['execute']();
            });
            if(func_array['terminate'])
                func_array['terminate']();
        }, false);
    });
}
this.changePage = function(src, func_array, into, params, prevent_push){
    console.log('changePage:::: ' + src);
    document.body.style.display = "none";
    this.displayer = false;
    this.removeResources();
    this.loadPage(src, func_array, into, params, prevent_push);
}

this.removeResources = function(){
    var mobile = ( (browser)?( (browser.loaded_mobile)? browser.loaded_mobile : false ): false);
    if(this.currentPage[this.currentPage.length - 1]){
        N$.removeResource(this.currentPage[this.currentPage.length - 1]['src']+ '_' + mobile +'.css', N$.globals.loaded_css);
        N$.removeResource(this.currentPage[this.currentPage.length - 1]['src']+ '_' + mobile +'.js', N$.globals.loaded_script);
    }
}
}

此库与其他库相邻。我感兴趣的是popstate事件

可能的Pushstate副本不起作用。-这是一个库-使用History.js