使用php动态创建的页面滚动到锚定标记
我有一个页面,从表中读取条目,然后php生成显示每一行的div——div的名称和id根据记录设置为唯一的字符串#。例如: 加载页面时,将以以下格式传递要滚动到的记录的唯一锚定字符串: href='showpost.php#g50' 当页面加载时,它会正确显示带有锚的url,但不会滚动 但是,如果我将光标放在浏览器的地址栏上并按使用php动态创建的页面滚动到锚定标记,php,anchor,Php,Anchor,我有一个页面,从表中读取条目,然后php生成显示每一行的div——div的名称和id根据记录设置为唯一的字符串#。例如: 加载页面时,将以以下格式传递要滚动到的记录的唯一锚定字符串: href='showpost.php#g50' 当页面加载时,它会正确显示带有锚的url,但不会滚动 但是,如果我将光标放在浏览器的地址栏上并按,页面将正确滚动到记录。奇怪的是,和将无法工作(Firefox16) 我猜动态创建的页面与此有关。你知道会发生什么吗?你总是可以使用一个简单的javascript调用滚动
,页面将正确滚动到记录。奇怪的是,
和
将无法工作(Firefox16)
我猜动态创建的页面与此有关。你知道会发生什么吗?你总是可以使用一个简单的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>
var hashSplit=location.href.split('#');
var curHash=hashSplit[1];
window.location.hash=curHash;
或者,如果您已经知道通过php页面的锚定将是什么,那么您可以更轻松地完成它
<?php
$anchor = "home";
?>
<script type="text/javascript">
window.location.hash = "<?= $anchor; ?>";
</script>
window.location.hash=“”;
非常有用的示例,谢谢SISYN。
但我有我的版本
let hashSplit = location.href.split('#');
let curHash = hashSplit[1];
if(typeof curHash !== 'undefined') {
$('html, body').animate({
scrollTop: $('#' + curHash).offset().top
}, 1000);
}
这相当复杂。我将致力于创建独立的php代码,看看是否可以复制它。那太好了。如果看不到您的问题的具体情况,就很难提供帮助-现在唯一可以帮助您的人是那些遇到完全相同问题的人。嗯,这些可能是显而易见的,但是,一些浏览器在跳转到锚(特别是如果您有很多内容)或可能是格式错误的锚标记之前需要一段时间?或者,如果您使用的是javascript,那么滚动事件可能在页面加载之前触发得太快了。我已经弄明白了。有时需要发布一个问题来了解如何调试它。我发现有一个java脚本onload滚动到0并与锚冲突。谢谢你鼓励我发布代码。