Rails 7集成Turbo后浏览器返回滚动异常,如何禁用该行为?
Turbo 返回滚动行为问题解答
问题结论
这个带有滚动过程的位置恢复确实是Turbo的默认特性——Turbo在处理浏览器历史导航(返回/前进)时,会自动恢复页面之前的滚动位置,并且默认带有平滑滚动的过渡效果。
禁用方法
1. 全局禁用
在你的Rails应用的JavaScript入口文件(通常是app/javascript/application.js)中,添加Turbo配置关闭滚动恢复:
Turbo.configure({ scrollRestoration: false })
配置完成后,所有Turbo处理的导航返回操作都不会再触发平滑滚动,直接回到原位置。
2. 局部禁用(针对特定链接/表单)
如果只需要在特定导航场景下禁用该行为,可以给目标链接或表单添加data-turbo-scroll-restoration="false"属性:
- 链接示例:
<%= link_to "注册", signup_path, data: { turbo_scroll_restoration: "false" } %>
- 表单示例:
<%= form_with model: @user, data: { turbo_scroll_restoration: "false" } do |f| %> <!-- 表单内容 --> <% end %>
设置后,通过该链接/表单跳转后再返回,不会出现滚动过渡过程,直接回到之前的位置。
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

