AJAX:使用history.pushState获取页面锚点

时间:2015-12-30 23:58:19

标签: javascript jquery ajax pushstate

我做了一个ajax网站,所以我的着装页面保留为index.php,所以为了让我的网页像www.example / about.html那样穿,我使用history.pushState这样它运作良好,礼服在我改变时点击链接按钮,我的问题是我无法使用浏览器的刷新按钮或后退按钮(我的地址更改但不是页面)。

这是我的ajax页面:

$(document).ready(function(){
	
    $("#menu a").click(function(){

       var page=$(this).attr("href");
        $.ajax({
            url: "pages/"+page,
            cache:false,
            success:function(html){
                afficher(html);
				history.pushState({key : 'value'}, 'hash', page);
            },
            error:function(XMLHttpRequest,textStatus, errorThrown){
                afficher("erreur lors du chagement de la page");
            }
        });
        return false;
    });
	
     $('#container').on('click', '.vs-transform a', function(){
      //Second ajax request
	  page=$(this).attr("href");
        $.ajax({
            url: "pages/"+page,
            cache:false,
            success:function(html){
                afficher(html);
				history.pushState({key : 'value'}, 'hash', page);
            },
            error:function(XMLHttpRequest,textStatus, errorThrown){
                afficher("erreur lors du chagement de la page");
            }
        });
        return false;
	});
	
	window.onpopstate = function(event){
		if(event.state === null){
			alert('return');
		}
	};
});

function afficher(data){
$("#container").fadeOut(500,function(){
    $("#container").empty();				
    $("#container").append(data);
    $("#container").fadeIn(500);	
});
}

1 个答案:

答案 0 :(得分:0)

history.pushstate旨在将网址添加到浏览器网址历史记录中,以便在您点击后退转发按钮时,恢复已保存的网页状态和网页内容

但是,当您单击刷新按钮时,浏览器只会重新加载已保存的URL(忽略历史记录中保存的页面)。如果这是一个假网址,您将收到404页面未找到错误。

从本质上讲,推送到历史记录的所有网址都应该是可由服务器处理的有效网址(假设您要允许按下刷新按钮)。