ruby-on-rails – 如何使用Turbolinks刷新页面

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何使用Turbolinks刷新页面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
据我所知,我可以在 Turbolinks 5调用以下代码,但它会更改滚动位置.有没有办法调用Turbolinks来刷新页面而不是更改滚动位置?
  1. Turbolinks.visit(location.toString());

这将做我想要的,但希望使用Turbolinks

  1. window.location.reload()

解决方法

调用visit之前存储当前滚动位置,然后在页面加载时滚动到该存储位置.将存储的滚动位置重置为null可确保后续页面加载不会滚动到旧位置.一种可能的实现可能是:
  1. var reloadWithTurbolinks = (function () {
  2. var scrollPosition
  3.  
  4. function reload () {
  5. scrollPosition = [window.scrollX,window.scrollY]
  6. Turbolinks.visit(window.location.toString(),{ action: 'replace' })
  7. }
  8.  
  9. document.addEventListener('turbolinks:load',function () {
  10. if (scrollPosition) {
  11. window.scrollTo.apply(window,scrollPosition)
  12. scrollPosition = null
  13. }
  14. })
  15.  
  16. return reload
  17. })()

然后你可以调用reloadWithTurbolinks().

要防止页面从顶部滚动到所需位置时闪烁,请在页面头部添加无预览缓存指令:

  1. <Meta name="turbolinks-cache-control" content="no-preview">

猜你在找的Ruby相关文章