1

asp.netで書かれた2つのWebページがあります。vb.netはコードビハインドです。1ページの次のボタンをクリックすると、2番目のページが表示されます。2番目のページは巨大です。次のボタンをクリックするとページが表示されますが、フォーカスは下にあります。上に移動するには、スクロールを使用する必要があります。フォーカスを上にする必要があります。

4

2 に答える 2

1

このスクリプトを使用して、ページをページ上の特定のコントロールにスクロールすることができます。

コードはCodeBehindに配置する必要があります。ページの上部にあるコントロールを選択するだけで、機能するはずです。

ページを一番下までスクロールさせるのは異常な動作であり、デフォルトでは発生しないはずです。そもそもなぜそれが起こっているのかを確認する必要があります。

アップデート:

そこで使用されているメソッドが廃止されたため、コードを更新しました...

private void FocusControlOnPageLoad(string ClientID)
{

            ClientScript.RegisterClientScriptBlock(this.GetType(), "FocusOnControl",

            @"<script> 

              function ScrollView()

              {
                 var el = document.getElementById('" + ClientID + @"')
                 if (el != null)
                 {        
                    el.scrollIntoView();
                    el.focus();
                 }
              }

              window.onload = ScrollView;

              </script>");

}

使用法:

protected void Page_Load(object sender, EventArgs e)
{
    FocusControlOnPageLoad(yourcontrol.ClientID); 
}

同等のVB.Net:(@Mahyarに感謝)

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    FocusControlOnPageLoad(yourcontrol.ClientID)
End Sub
Private Sub FocusControlOnPageLoad(ByVal ClientID As String)
    Dim script As String = _
        "<script>" + _
            "function ScrollView()" + _
            "{" + _
                "var el = document.getElementById('" + ClientID + "')" + _
                "if (el != null)" + _
                "{" + _
                "el.scrollIntoView();" + _
                "el.focus();" + _
                "}" + _
            "}" + _
            "window.onload = ScrollView;" + _
        "</script>"
    ClientScript.RegisterClientScriptBlock(Me.GetType(), "FocusOnControl", script)
End Sub
于 2012-10-30T14:33:50.587 に答える
0

aspxを使用している場合は、このスクリプトをページの最後のBodyタグの前に追加するだけです。

<script type="text/javascript">
    window.scrollTo(0,0);
</script>
于 2012-10-30T15:58:21.700 に答える