用php动态创建页面滚动到锚点标签

问题描述 投票:3回答:2

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

当页面被加载时, 它被传递给唯一的锚字符串的记录滚动到格式: href='showpost.php#g50'

当页面加载时,它正确地显示了带有锚点的网址,但它不会滚动。

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

我猜测是动态创建的页面与此有关。有什么办法吗?

php anchor
2个回答
1
投票

你可以使用一个简单的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>

0
投票

非常有用的例子,谢谢SISYN.但我有我的版本。

let hashSplit = location.href.split('#');
let curHash = hashSplit[1];
if(typeof curHash !== 'undefined') {
    $('html, body').animate({
        scrollTop: $('#' + curHash).offset().top
    }, 1000);
}
© www.soinside.com 2019 - 2024. All rights reserved.