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

この JS は、要素に ID も設定すると、一般的にうまく機能します。

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.getElementById('MyID').scrollIntoView(true);

ほぼすべてのブラウザーでうまく機能しますが、一部のブラウザーまたは一部のモバイル (一部の Blackberry バージョンなど) では「scrollIntoView」機能が認識されないことに気付いたので、この解決策を検討します (前のものより少し醜い) :

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

要素がアンカー タグの場合は、次のことができるはずです。

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

window.location.hash を使用する場合は「#」を使用しない

于 2008-11-24T20:23:54.390 に答える
-1

たとえば、名前が追加された新しい URL を開くことができます。http://www.example.com/mypage.htm#label2

JavaScript では、

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