44

考虑以下代码:

<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 的元素,该元素已存在于我的页面上。如果这是一个可行的解决方案,我会添加锚标签。

4

8 回答 8

74

如果您还在元素上放了一个 ID,那么这个 JS 通常对我来说效果很好:

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

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

于 2008-11-05T17:08:30.317 回答
11

使用 javascript:

window.location.href = '#label2';

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

于 2008-11-05T16:45:43.000 回答
3

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

ClientScript.RegisterStartupScript(this.GetType(), "hash", "location.hash = '#form';", true);
于 2014-06-03T14:07:07.273 回答
2

我想这会起作用:

window.location="<yourCurrentUri>#label2";
于 2008-11-05T16:43:12.350 回答
1

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

document.getElementsByName('label2')[0].focus();
于 2008-11-05T17:23:21.053 回答
1

解决方案

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

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

window.location.href = window.location.protocol + "//" + window.location.host + 
                       window.location.pathname + window.location.search + 
                       "#MyAnchor";
于 2010-11-18T03:08:57.827 回答
0

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

于 2008-11-24T20:23:54.390 回答
-1

例如,您可以只打开附加名称的新 URLhttp://www.example.com/mypage.htm#label2

在 JavaScript 中,

location.href = location.href + '#label2';
于 2008-11-05T16:45:33.313 回答