1

レンダリング後にページをスクロールまたはジャンプする方法はありますか?

具体的には、私のコントローラー アクションでは、ユーザーをページの特定の場所に送りたい状況がいくつかあります。それが別のページからの単なるリンクである場合は、おそらく URI フラグメント識別子 (" http://blorg.com/page#id ") を使用しますが、これは条件に応じて動的に生成する必要があります。

何らかの方法で JavaScript (プロトタイプ) を使用する必要があるかもしれませんが、特にコントローラーからページの読み込みが完了したら、関数を呼び出す方法がわかりません。

4

3 に答える 3

3

あなたは本当にあなたの見解でこの種のことをするべきです。コントローラーでは、表示するページの部分を決定するために条件を評価し、結果をビューに渡す必要があります。ビューでこの情報を使用して、次のような処理を行う小さな JavaScript をページの下部に追加できます。もちろん、ユーザーが JavaScript をオフにしている場合、これは役に立ちません ;)

コントローラーコード:

def index
  # evaluate the condition
  @section = (rand*10).to_i
end

ビューコードを表示:

<div id="#section1">some stuff</div>
....
<div id="#section9">other stuff</div>

<% if @section>0 %>
<script type="text/javascript">
// <!--
document.location.hash="#section<%= @section %>";
// -->
</script>
于 2009-04-14T23:59:39.327 に答える
1

jQueryを使用している場合、答えは次のようになります。

$("body").scrollTop($("#my-element").position().top;

または、本当に凝ったものにしたい場合(推奨)、次のようにスクロールトップをアニメーション化できます。

$("body").animate({scrollTop: $("#my-element").position().top},1000);
于 2012-05-15T17:53:01.780 に答える
0

ページにリンクする URL にフラグメント部分を含めることで、ブラウザをページの下の位置までスクロールさせることができます。たとえば、 http ://example.com/index.html#section3は、「id」section3 を持つ要素までページをスクロールします。リンク、段落などでその id を使用できます。ブラウザは、レンダリング後に要素が表示されることを確認します。

于 2009-04-15T00:10:08.240 に答える