我可以在我的jquery中添加一个后退函数吗?

时间:2014-02-23 06:11:39

标签: javascript php jquery ajax

我正在建立自己的个人网站,并在我自己的时候自学新代码 - 我尝试过的最新内容之一是jquery(和一些ajax)调用新内容而不重新加载页面以便我的手风琴菜单没有重装。经过一些试验和错误,以及StackOverflow的帮助,我有以下内容:

function reloadMiddleWith(theme, page, content) {
    var new_url = "http://www.myurl.com/dev/" + page + ".php#" + content;
    $('#live-area').addClass(theme);
    $('#area-loader').load(new_url);
}

这很完美!这就是我所要求的一切,但有一个疏忽我没有考虑过:我不能使用我的BACK按钮。在它的当前形式中,单击BACK不会将我带到我之前的内容,但是当我打开浏览器时,我会一直回到浏览器的“启动”页面。顺便说一句,上面的代码是我正在使用的原始AJAX代码的替代......

function reloadMiddleWith(theme, page, content) {
    var new_url = "http://www.myurl.com/dev/" + page + ".php#" + content;
  $(‘#live-area’).addClass(theme);
  $.ajax({
      url: new_url,
      dataType: 'html'
 })
  .done(function(data) {
      // Assuming the request returns HTML, replace content
      $('#area-loader').html(data);
 });

我的问题是我需要做些什么来增加回击的能力?第二个AJAX脚本能够做到这一点吗?它是一个小的补充还是我需要完全重写函数?

谢谢!

1 个答案:

答案 0 :(得分:1)

因为您的浏览器没有重新加载(因为ajax),所以没有维护历史记录因此您无法使用后退按钮。如果需要,您可以在网站上创建一个后退按钮(而不是浏览器后退按钮),然后自己跟踪历史记录。

或者搜索“html5 pushstate”以寻找替代方法。

或者让您的应用程序侦听hashtags并相应地加载特定视图。主题标签可能看起来像这样http://mywebsite.com/#/somepage所以每当您的网页加载它时,请检查#符号后面的网址然后加载(通过ajax)正确的视图。

或者尝试使用BackboneAngular

这样的框架

另外,您可能会发现this有趣的问题。