【问题标题】:Periodically reload a page in Rails 4 using Turbolinks使用 Turbolinks 在 Rails 4 中定期重新加载页面
【发布时间】:2015-12-02 11:23:41
【问题描述】:

我有一个显示一些状态信息的页面。此页面无需任何用户输入即可在 PC 上运行,并且需要每隔几分钟刷新一次。

我可以用元标记刷新它,但这看起来很粗糙。它会强制刷新所有资产并导致难看的闪烁。 Turbolinks 在其他任何地方都做得很好,页面加载更智能。我可以让它自动刷新吗?

如果能提供任何关于如何使这项工作更好的建议,我将不胜感激。

【问题讨论】:

  • 为什么需要刷新?不能实现一些 ajax 甚至更漂亮的解决方案吗?
  • 我以前从未这样做过。我什至不知道从哪里开始。如果您能指出我正确的方向,那将很有帮助。
  • $.ajax('/your/url').succes(function() { // do something with the feedback}),只需通过 ajax 搜索定期更新。或查找建立聊天的教程。
  • 谢谢。经过一番谷歌搜索后,我很确定我已经接近完成这项工作了。

标签: javascript ruby-on-rails-4 turbolinks


【解决方案1】:

这是我最近在 Turbolinks 5 下使用的。必须添加一些变量来阻止它在用户浏览离开页面时重新加载,等等。

<script>
  if(!window.reloadTimer) {
    var SECONDS = 30;
    window.reloadTimer=setTimeout(function(){
      console.log("Reload!");
      window.reloadTimer=undefined;
        Turbolinks.visit(location.toString(),{action: "replace"});
    }, SECONDS * 1000);
    document.addEventListener("turbolinks:visit",function() {clearTimeout(window.reloadTimer);window.reloadTimer=undefined;});
  }
</script>

【讨论】:

  • 工作得很好,这对我来说是一种使用 turbolinks 的新方法。谢谢!
  • 谢谢这个
【解决方案2】:

试试这个:

$(document).on('ready page:load', function() {
    var SECONDS = 5;
    setTimeout(function(){
        Turbolinks.enableTransitionCache(true);
        Turbolinks.visit(location.toString());
        Turbolinks.enableTransitionCache(false);
    }, SECONDS * 5);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多