【问题标题】:PHP Header Location - Move to anchor without reloadingPHP Header Location - 移动到锚点而不重新加载
【发布时间】:2012-11-30 17:26:54
【问题描述】:

我正在尝试找到一种无需重新加载即可导航到同一页面内的 HTML 锚点的方法。现在我只是在使用:

header("Location: #anchor_name");

问题在于它会重新加载页面。如果可以的话,我真的很想避免使用 JavaScript,但我不知道有没有其他方法?

谢谢!

PS - 我知道我需要在重定向中使用完整的 URI - 为了简单起见,这里只是缩写。

【问题讨论】:

  • 您只能使用 Javascript 或直接锚链接来实现此“页面内”。这两种方法现在都是下面的答案!
  • 你为什么要在服务器上这样做?您的问题并没有真正解释您要达到的目标以及您的情况。
  • 是的,这里也一样。我没有理由认为它在服务器方面有意义。你也不提供它们。使用客户端。
  • @Djumaka - 感谢您的反馈。我有一个用户提交的表单。作为回帖的一部分,我生成了一个隐藏的 DIV,我只想根据成功提交导航到它/公开它。
  • 不会改变什么。使用客户端。 “回邮”是什么意思?您如何处理表单提交? AJAX?

标签: php redirect header location anchor


【解决方案1】:

你可以使用js:

 function scrollToAnchor_name(anchorName) {
     location.hash = "#" + anchorName;
 }

【讨论】:

  • 谢谢大家。我受过足够的教育。 JS 是。
【解决方案2】:

在html中,使用<a href="#anchor_name">Click me</a>

【讨论】:

    【解决方案3】:

    PHP 是一种服务器端技术。因此,必须对页面进行的任何更改,无论是在内容方面还是确定哪个部分是可见的,都只能通过再次寻址服务器来实现。就其本身而言(意思是:没有客户端脚本的帮助,例如 ajax 调用),这将始终强制重新加载页面。在不重新加载的情况下执行此操作的唯一方法是使用客户端脚本,然后需要 JavaScript(如本页其他帖子中所述)。

    【讨论】:

      【解决方案4】:

      如果您的网站中包含 jQuery,这里有一些我经常用于此目的的流畅代码:

      function goToByScroll(id){
        $('html,body').animate({scrollTop: $("#"+id).offset().top},'slow');
      }
      

      【讨论】:

        【解决方案5】:

        您可以使页面的 href 包含锚点,例如“submit.php#form_top”,并根据提交情况使用 PHP 输出该锚点或不输出该锚点。所以第一次访问页面时,不会有form_top的锚点,它只会从页面顶部显示,但对于后续调用(发布表单),它会跳转到锚点。

        缺点是带有始终可见的锚点的难看的 URL,如果您在没有锚点的情况下调用 url,它将不起作用(需要放置锚点并在需要时保留以供后续调用)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-14
          • 1970-01-01
          • 2013-12-09
          • 1970-01-01
          • 1970-01-01
          • 2022-09-27
          • 2017-08-13
          • 1970-01-01
          相关资源
          最近更新 更多