如何命名一个jQuery函数来使浏览器的后退按钮工作?

我正在尝试为ajaxyfy网站编写一个函数,一切都很完美,除了后退按钮的function。

这就是我现在所拥有的:

function loading() { if (typeof history.pushState !== "undefined") { var historyCount = 0; $('.menu-item, .logo').on('click','a',function(e){ e.preventDefault(); $(this).data('clicked', true); if ($(this).is('.logo a')) { var homepage = $(this).attr('href'); function1(homepage); history.pushState(null, null, homepage); } else if ($(this).is('.projects a')) { var projects = $(this).attr('href'); function2(projects); history.pushState(null, null, projects); } else { var pages = $(this).attr('href'); function3(pages); history.pushState(null, null, pages); } }); window.onpopstate = function(){ if(historyCount) { goTo(document.location); } historyCount = historyCount+1; }; } } function function1(homepage) { $.ajax({ url: homepage, success: function(data) { $('.container_right_wrapper').hide('slide', {direction: 'left'}, 300, function(){ $(this).html(data).show('slide', {direction: 'right'}, 300); console.log('home'); }); } }); } function function2(projects) { $.ajax({ url: projects, success: function(data) { $('.container_right_wrapper').hide('slide', {direction: 'left'}, 300, function(){ $(this).html(data).show('slide', {direction: 'right'}, 300); console.log('projects'); }); } }); } function function3(pages) { $.ajax({ url: pages, success: function(data) { $('.container_right_wrapper').hide('slide', {direction: 'left'}, 300, function(){ $(this).html(data).show('slide', {direction: 'right'}, 300); console.log('page'); }); } }); } 

并且存在问题

  window.onpopstate = function(){ if(historyCount) { goTo(document.location); } historyCount = historyCount+1; }; 

如果我离开goTo它根本不起作用,如果我输入任何其他function的名称,即function1 ,它只适用于function1.如何使它适用于所有三个function,无论触发了什么function?

编辑

我真正想到的是function:

  window.onpopstate = function(){ if(historyCount) { goTo(document.location); } historyCount = historyCount+1; }; 

它的名字可以清楚地看到goTo (因为它主要与名为goTo(href)的函数有关)。 在if条件标签中,我调用函数: function1function2function3 ,它替换了先前存在的函数goTo(href) 。 当我将function划分为三个单独的function时,在window.popstate …上面的function停止工作。 我需要有三种不同的function,因为当点击不同的菜单按钮时我需要发生三种不同的事情。 我可以用function1function2等替换goTo ,但是后退按钮只适用于这三个函数中的一个。 我希望它适用于所有人。

好吧,我设法自己做了一切。 我深入研究了HTML5 push.state,并进行了以下更改:

我变了

 history.pushState(null, null, homepage); 

至:

 history.pushState('function1', null, homepage); 

我对另外两个push.state函数做了类似的更改。 然后我换了

 window.onpopstate = function(){ if(historyCount) { goTo(document.location); } historyCount = historyCount+1; }; 

有:

 window.onpopstate = function(){ if(historyCount) { var JSONattr = (JSON.stringify(event.state).replace(/\"/g, "")); window[JSONattr](document.location); } historyCount = historyCount+1; }; 

什么从push.state拉出三个函数中的每一个的名称,并且由于这一点,每个浏览器的后退按钮命中,所需的function正在执行。