使用php动态创建的页面滚动到Anchor Tag

时间:2012-11-19 08:55:03

标签: php anchor

我有一个页面,其中从表中读取条目然后php生成显示每行的div - div的名称& id根据记录#设置为唯一字符串。例如:

加载页面时,会传递记录的唯一锚字符串,以以下格式滚动: HREF = 'showpost.php#G50'

当页面加载时,它正确显示带锚点的URL但不滚动。

但是,如果我将光标放在浏览器的地址栏上并按<Enter>,页面会正确滚动到记录中。奇怪的是,<F5><Ctrl-R>将无效(Firefox 16)。

我猜测动态创建的页面与它有关。有什么想法可能会发生什么?

2 个答案:

答案 0 :(得分:0)

您可以随时使用简单的JavaScript调用滚动到锚点。您可以从页面的任何位置调用Javascript代码,因此为了安全起见,您可以在PHP生成所有锚点之后将其放在页面的末尾。

<?php 
    // php generation code here
?>
<script type="text/javascript">
    var hashSplit = location.href.split('#');
    var curHash= hashSplit[1];
    window.location.hash = curHash;
</script>

或者,如果您已经知道页面的锚点是通过php进行的,那么您可以更轻松地完成它。

<?php
    $anchor = "home";
?>
<script type="text/javascript">
    window.location.hash = "<?= $anchor; ?>";
</script>

答案 1 :(得分:0)

非常有用的示例,谢谢SISYN。 但是我有我的版本

let hashSplit = location.href.split('#');
let curHash = hashSplit[1];
if(typeof curHash !== 'undefined') {
    $('html, body').animate({
        scrollTop: $('#' + curHash).offset().top
    }, 1000);
}