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