【问题标题】:AJAX: get page anchor with history.pushStateAJAX:使用 history.pushState 获取页面锚点
【发布时间】:2015-12-30 23:58:18
【问题描述】:

我创建了一个 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);	
});
}

【问题讨论】:

  • 我不明白你的问题。
  • 我不明白你想说什么。我们是志愿者,我们回答问题是因为我们是好人。当您的代码不起作用时,请不要生我们的气。为了让我们更容易回答问题,请遵循关于 [如何] 的指南。不过,我真的不明白你在说什么。
  • 我创建了一个 ajax 网站,所以我的地址页面保留为 index.php,所以为了找回我的页面地址,如 www.example/about.html,我使用 history.pushState 所以它运行良好,当我点击链接按钮时地址改变,我的问题是我不能使用浏览器的刷新按钮或后退按钮,(我的地址改变但不是页面)
  • 好的,如果你改写你的问题会有所帮助,这是我之前发送的链接:stackoverflow.com/help/how-to-ask

标签: javascript jquery ajax pushstate


【解决方案1】:

history.pushstate 旨在将 url 添加到浏览器 url 历史记录中,这样当您单击 backforward 按钮时,已保存的页面状态和页面内容会被恢复.

但是,当您单击 刷新 按钮时,浏览器只会重新加载保存的 url(忽略历史记录中保存的页面)。如果这是一个虚假的 url,你会得到一个 404 page not found 错误。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 2012-10-08
    相关资源
    最近更新 更多