我有一个页面,从一个表格中读取条目,然后php生成显示每行的div - div的名称& id根据记录#设置为一个唯一的字符串。例如:当页面被加载时,它的名字是& id。
当页面被加载时, 它被传递给唯一的锚字符串的记录滚动到格式: href='showpost.php#g50'
当页面加载时,它正确地显示了带有锚点的网址,但它不会滚动。
然而,如果我把光标放在浏览器的地址栏上,并按下 <Enter>
页面正确滚动到记录。奇怪的是。<F5>
和 <Ctrl-R>
将无法工作(Firefox 16)。
我猜测是动态创建的页面与此有关。有什么办法吗?
你可以使用一个简单的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>
非常有用的例子,谢谢SISYN.但我有我的版本。
let hashSplit = location.href.split('#');
let curHash = hashSplit[1];
if(typeof curHash !== 'undefined') {
$('html, body').animate({
scrollTop: $('#' + curHash).offset().top
}, 1000);
}