【问题标题】:Back button - skip anchors后退按钮 - 跳过锚点
【发布时间】:2011-05-05 21:53:54
【问题描述】:

我有一个典型的 ajax 风格的动态内容设置:单击一个链接,更改地址栏中的锚点,然后加载新内容。当用户单击后退按钮时,它会循环遍历所有锚点 - 正如预期的那样。

有没有办法(我假设使用 JavaScript)使后退按钮转到上一页,并“忽略”所有锚点?

【问题讨论】:

    标签: javascript url anchor


    【解决方案1】:

    计算用户通过和使用的阶段

    history.back(X);
    

    history.go(-1*X);
    

    为了返回 X 个页面/锚点。

    【讨论】:

      【解决方案2】:

      首先,为了确保我理解,您将 AJAX 书签命名为与 DOM 元素中的 ID 相同?如果是这样,无论如何要撤消此操作?您可以欺骗它不要倒下,但这是一种笨拙的做法。相反,您应该有一个像#somepage 这样的ID 和像#!/somepage 这样的AJAX url,这样他们就不会感到困惑。此外,像 Google 这样的人不会知道普通的 #ids 是哈希 URL,但 #!/ 会给 Google 一个线索。

      现在,如果您想使用 #!/ 方法来执行此操作,您需要为旧版浏览器设置一个计时器 (

      window.onhashchange = function(){ console.log('hash has changed') };
      

      然后,如果您想支持旧版浏览器,您需要做一些更高级的事情。你需要做的:

      var currentPage = '';
      setTimeout(function(){
        if(currentPage !== window.location.hash){
          console.log('hash has changed');
          currentPage = window.location.hash
        }
      },500);
      

      在这两个示例中,您都需要将console.log()s 替换为您自己的触发“更改页面”事件的函数。

      要停止滚动,您可以添加:

      window.onhashchange = function(){
        if (window.location.hash == "" || window.location.hash == "#"){ return false; }
        //rest of your code here!
      };
      

      return false 将阻止滚动。这也应该在计时器中起作用。

      更多信息:
      https://developer.mozilla.org/en/DOM/window.onhashchange
      http://msdn.microsoft.com/en-us/library/cc288209(VS.85).aspx
      http://ajaxpatterns.org/Unique_URLs

      【讨论】:

        【解决方案3】:
        location.replace(document.referrer)
        

        这对我有用。根据您的目的,您可以在“onclick”中使用它或通过 JavaScript 添加一些附加条件,例如如果推荐人为空 看: In what cases will HTTP_REFERER be empty

        【讨论】:

          猜你喜欢
          • 2016-03-08
          • 2011-11-22
          • 1970-01-01
          • 1970-01-01
          • 2019-06-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多