1

渲染后有没有办法滚动或向下跳转页面?

具体来说,在我的控制器操作中,在某些情况下,我希望将用户发送到页面上的特定位置。如果它只是来自另一个页面的链接,我可能会使用 URI 片段标识符——“ http://blorg.com/page#id ”——但这需要根据某些条件动态生成。

也许我需要以某种方式使用 JavaScript (Prototype),但我不知道一旦页面加载完成后如何调用该函数,尤其是从控制器。

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 回答