1

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

header("Location: #anchor_name");

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

谢谢!

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

4

5 回答 5

2

你可以使用js:

 function scrollToAnchor_name(anchorName) {
     location.hash = "#" + anchorName;
 }
于 2012-12-12T22:01:37.160 回答
0

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

于 2012-12-12T22:02:07.690 回答
0

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

于 2012-12-12T22:12:25.897 回答
0

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

function goToByScroll(id){
  $('html,body').animate({scrollTop: $("#"+id).offset().top},'slow');
}
于 2012-12-12T22:15:33.393 回答
0

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

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

于 2014-05-20T03:02:31.280 回答