渲染后有没有办法滚动或向下跳转页面?
具体来说,在我的控制器操作中,在某些情况下,我希望将用户发送到页面上的特定位置。如果它只是来自另一个页面的链接,我可能会使用 URI 片段标识符——“ http://blorg.com/page#id ”——但这需要根据某些条件动态生成。
也许我需要以某种方式使用 JavaScript (Prototype),但我不知道一旦页面加载完成后如何调用该函数,尤其是从控制器。
渲染后有没有办法滚动或向下跳转页面?
具体来说,在我的控制器操作中,在某些情况下,我希望将用户发送到页面上的特定位置。如果它只是来自另一个页面的链接,我可能会使用 URI 片段标识符——“ http://blorg.com/page#id ”——但这需要根据某些条件动态生成。
也许我需要以某种方式使用 JavaScript (Prototype),但我不知道一旦页面加载完成后如何调用该函数,尤其是从控制器。
在你看来,你真的应该做这种事情。在您的控制器中,您应该评估您的条件以确定您要显示的页面部分,然后将结果传递到视图中。然后,您可以在视图中使用此信息在页面底部添加一小段 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>
如果您使用的是 jQuery,答案可能如下:
$("body").scrollTop($("#my-element").position().top;
或者,如果您想要真正花哨(推荐),您可以像这样为滚动顶部设置动画:
$("body").animate({scrollTop: $("#my-element").position().top},1000);
您可以通过在链接到页面的 url 中包含一个片段部分,让浏览器滚动到页面下方的某个位置。例如http://example.com/index.html#section3会将页面滚动到具有“id”section3 的元素。您可以在链接、段落等上使用该 ID。浏览器将确保元素在渲染后可见。