【问题标题】:Turbolinks not working - instead loads page twiceTurbolinks 不工作 - 而是加载页面两次
【发布时间】:2014-01-21 17:16:14
【问题描述】:

所以,在我的 Rails 4 应用程序中,我有 Turbolinks gem。

//= require jquery.js 
//= require jquery.turbolinks
//= require turbolinks

但是,似乎有些不对劲。 Turbolinks 的重点不是您不必在启动时加载所有 jquery/css/asset 管道吗?好吧,这似乎没有发生,每次请求新页面时它都会继续加载所有 jquery,更重要的是,它甚至会使每个页面加载 两次。如:

Started GET "/" for ip at 2014-01-21 18:55:35 +0200
*Loads bunch of stuff here*

Started GET "/" for ip at 2014-01-21 18:55:35 +0200
*Loads bunch of stuff here*

Started GET "/assets/jquery.js"
Started GET "/assetsjquery_ujs" 
Started GET "/assets/litecarousel"
Et cetera...

当我注释掉//= require turbolinks 时,控制台似乎只显示一页加载,这是正常的。这可能是什么原因?

我有很多带有 $(document).ready 的 jquery 函数,但是使用 jquery.turbolinks 这应该没问题。

// 编辑: 测试了一些东西,这似乎是与 Chrome 相关的错误。在火狐上运行良好。另外,我的 gem 版本是 v.2.2.0。

【问题讨论】:

  • 遇到了同样的问题。必须为特定页面禁用 turbolinks,这样它就不会加载两次破坏我的一些逻辑,但很高兴找到原因!
  • 是的,我自己进行了一些测试,这似乎首先是 Chrome 的问题。在火狐上运行良好。但是,有一个解决方案需要将 Turbolinks 更新到 v. 1.3.1。但是,我有(可能你也有)v.2.2.0 并且问题仍然存在。希望有人对此有更多信息。将在这里更新我发现的内容。

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


【解决方案1】:

您是否将<%= javascript_include_tag ... %> 行放在页面的<body> 标记之间,而不是放在<head> 中?我曾经从 Turbolinks 收到各种奇怪的错误,这就是原因。

【讨论】:

  • 使用 turbolinks,脚本必须进入 <head>。这样做的原因是 Turbolinks 通过在更改页面时换出 <body> 来工作,这样做会重新执行所有第三方脚本(想象 jQuery 被重新评估),这可能不是您想要的。 coderwall.com/p/ypzfdw/faster-page-loads-with-turbolinks
  • 这就是我的意思 - 我告诉他要确保他的脚本在头脑中,而不是在身体中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2014-02-24
  • 1970-01-01
  • 2013-08-17
  • 2013-02-24
  • 1970-01-01
相关资源
最近更新 更多