通常人们会要求更改地址栏而不刷新,我想的是相反的:我想跳转到页面中的锚点,例如,具有跳到内部链接而不更改地址栏?
<a name="foo">
,然后实现相同的功能,用户按压
<a href="#foo">
而不改变地址栏。这纯粹是美观的,但这意味着像“在完成后再次设置window.location”这样的建议将无济于事,因为中间更改仍然很明显(地址栏会闪烁,这正是我想要的避免)。
通常人们会要求更改地址栏而不刷新,我想的是相反的:我想跳转到页面中的锚点,例如,具有跳到内部链接而不更改地址栏?
<a name="foo">
,然后实现相同的功能,用户按压
<a href="#foo">
而不改变地址栏。这纯粹是美观的,但这意味着像“在完成后再次设置window.location”这样的建议将无济于事,因为中间更改仍然很明显(地址栏会闪烁,这正是我想要的避免)。
还有就是DOM功能element.scrollIntoView()
。为了您的目的,这样的工作是这样的:
var target = document.getElementById('foo');
target.scrollIntoView();
你也应该删除<a name="foo">
联系,并与一个ID的任何元素替换它们。例如:
<h1><a name="heading"></a>Heading</h1>
<h1 id="heading">Heading</h1>
看看,jQuery的ScrollTo插件,http://demos.flesler.com/jquery/scrollTo/
OP似乎没有使用jQuery ... – 2012-04-15 17:55:26
请'document.getElementById(“id”)。scrollIntoView();'是1行代码,并且不需要数千行长的库,而不需要提到额外的插件......为什么要避免使用jQuery – 2012-04-15 18:06:58
然而,如果我使用jQuery,它可能是一个更好的方法(不是在这种情况下,也许是因为插件)。 – 2012-04-15 20:56:03
为什么?这伤害了链接到页面各个部分的能力。我一直这样做(包括在这个网站上)。 – 2012-04-15 17:44:05