Javascript 未单击ancor时检测location.hash更改

Javascript 未单击ancor时检测location.hash更改,javascript,jquery,ajax,url,location,Javascript,Jquery,Ajax,Url,Location,在谷歌上搜索了两天后,我无法摆脱这个问题。。 我有一个完整的ajax网站,我需要使后退按钮工作。实际情况是,我可以在使用此代码更改历史记录状态时处理事件 window.onpopstate = function(e){ //ajax call here } 问题是,当我按下后退按钮时,该函数被正确调用,但当我单击ancor的菜单时,该函数被调用两次。这就是为什么我有锚函数来使用普通的ajax调用: $("#home").click(function(){

在谷歌上搜索了两天后,我无法摆脱这个问题。。 我有一个完整的ajax网站,我需要使后退按钮工作。实际情况是,我可以在使用此代码更改历史记录状态时处理事件

window.onpopstate = function(e){
   //ajax call here
}
问题是,当我按下后退按钮时,该函数被正确调用,但当我单击ancor的菜单时,该函数被调用两次。这就是为什么我有锚函数来使用普通的ajax调用:

$("#home").click(function(){            
        load_right_container('home.php');
        location.hash = "!home";           
        return false;
    });
显然,改变location.has甚至激活了window.onpopstate,所以我有了页面的双重加载

我的想法是,仅当未单击锚点且location.hash发生更改时,才调用ajax加载,例如:

if( window.onpopstate && !($('a').click())
{ //ajax call here}
但它不起作用

有什么建议吗

谢谢

编辑1:

也许问题还不清楚:
是否有一种方法可以在不通过trought location.hash change的情况下仅获取返回按钮压力?

$(窗口)。on('hashchange',function()){…
你能提供一个复制你的问题的JSFIDLE吗?不,我不能处理,太难了。@adeneo你的解决方案和我的一样,我不需要检测haschange,我需要在按下“上一步”按钮时检测haschange,但不是在单击“锚定”时检测haschange