PHP Header Location - 移动到锚点而不重新加载
Posted
技术标签:
【中文标题】PHP Header Location - 移动到锚点而不重新加载【英文标题】:PHP Header Location - Move to anchor without reloading 【发布时间】:2012-11-30 17:26:54 【问题描述】:我正在尝试找到一种无需重新加载即可导航到同一页面内的 html 锚点的方法。现在我只是在使用:
header("Location: #anchor_name");
问题在于它会重新加载页面。如果可以的话,我真的很想避免使用 javascript,但我不知道有没有其他方法?
谢谢!
PS - 我知道我需要在重定向中使用完整的 URI - 为了简单起见,这里只是缩写。
【问题讨论】:
您只能使用 Javascript 或直接锚链接来实现此“页面内”。这两种方法现在都是下面的答案! 你为什么要在服务器上这样做?您的问题并没有真正解释您要达到的目标以及您的情况。 是的,这里也一样。我没有理由认为它在服务器方面有意义。你也不提供它们。使用客户端。 @Djumaka - 感谢您的反馈。我有一个用户提交的表单。作为回帖的一部分,我生成了一个隐藏的 DIV,我只想根据成功提交导航到它/公开它。 不会改变什么。使用客户端。 “回邮”是什么意思?您如何处理表单提交? AJAX? 【参考方案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,它将不起作用(需要放置锚点并在需要时保留以供后续调用)。
【讨论】:
以上是关于PHP Header Location - 移动到锚点而不重新加载的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 PHP Header("Location: ") 函数重定向
关于header('location:url')的一些说明,php缓冲区
关于header('location:url')的一些说明,php缓冲区
PHP Header Location 在 localhost xampp 中不起作用?