以编程方式滚动到锚标记

时间:2008-11-05 16:40:30

标签: asp.net navigation anchor

请考虑以下代码:

<a href="#label2">GoTo Label2</a>
... [content here] ...
<a name="label0"></a>More content
<a name="label1"></a>More content
<a name="label2"></a>More content
<a name="label3"></a>More content
<a name="label4"></a>More content

有没有办法模仿点击“GoTo Label2”链接,通过代码滚动到页面上的相应区域?

编辑:可接受的替代方法是滚动到具有唯一ID的元素,该元素已存在于我的页面上。如果这是一个可行的解决方案,我会添加锚标签。

8 个答案:

答案 0 :(得分:73)

如果您还在元素上添加了ID,那么这个JS通常对我有用:

document.getElementById('MyID').scrollIntoView(true);

这很好,因为它也会定位可滚动的div等,以便内容可见。

答案 1 :(得分:11)

使用javascript:

window.location.href = '#label2';

如果您需要从后面的服务器/代码执行此操作,您只需发出此Javascript并将其注册为该页面的启动脚本。

答案 2 :(得分:3)

从服务器端移动到锚点,例如c#。

ClientScript.RegisterStartupScript(this.GetType(), "hash", "location.hash = '#form';", true);

答案 3 :(得分:2)

我想这会奏效:

window.location="<yourCurrentUri>#label2";

答案 4 :(得分:1)

如果元素是锚标记,您应该能够:

document.getElementsByName('label2')[0].focus();

答案 5 :(得分:1)

解决方案

document.getElementById('MyID').scrollIntoView(true);

几乎在所有浏览器中运行良好,而我注意到在某些浏览器或某些移动设备(例如某些Blackberry版本)中,“scrollIntoView”功能无法识别,因此我会考虑这个解决方案(有点丑陋)前一个):

window.location.href = window.location.protocol + "//" + window.location.host + 
                       window.location.pathname + window.location.search + 
                       "#MyAnchor";

答案 6 :(得分:0)

您只需打开附加名称的新网址,例如http://www.example.com/mypage.htm#label2

在JavaScript中,

location.href = location.href + '#label2';

答案 7 :(得分:0)

使用window.location.hash

时没有“#”