以编程方式滚动到锚标签

考虑下面的代码:

<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,它已经存在于我的网页上的元素。 如果这是一个可行的解决scheme,我将添加锚标签。

如果你还在元素上添加一个ID,这个JS对我来说一般效果很好:

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

这是好的,因为它也将定位滚动div等,使内容是可见的。

麦克风。

使用javascript:

 window.location.href = '#label2'; 

如果你需要从后面的服务器/代码来完成,你可以发出这个Javascript并注册为该页面的启动脚本。

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

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

我想这会起作用:

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

当你使用window.location.hash时没有“#”

解决scheme

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

几乎所有的浏览器都能正常工作,而我注意到在某些浏览器或者某些移动设备(比如某些黑莓版本)中,“scrollIntoView”函数无法被识别,所以我会考虑这个解决scheme(比前一个更丑陋) :

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

如果元素是一个锚标签,你应该能够做到:

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

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

在Javascript中,

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