问题标签 [turbolinks-5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
245 浏览

javascript - jQuery 文件上传器和 turbolinks 无法在 heroku 上运行,已经尝试了我可以在 SO 上找到的所有修复程序

我花了几个小时试图解决这个问题。我在 Rails 中使用 Heroku 指南进行 S3 直接上传。我能够让它在我的定制版本中工作。在本地设置中效果很好,但在 Heroku 上效果不佳。我已将其缩小为 JS 问题,因为进度条不想加载。JS 使上传依赖于在开始上传之前的创建。我的 JS 技能很烂(我一直坚持下去,因为我必须这样做,但我非常讨厌 JS,这不适合我)。

应用程序.js:

为了让它在测试中工作,我必须将脚本放在表单本身中。

_form.html.erb

我尝试在 application.js 文件中使用脚本,测试结果参差不齐,但在 Heroku 上不起作用。我也试过每一种组合

我已经预编译了资产,我已经禁用了这个表单的 turbolinks,禁用了这个页面的 turbo 链接,禁用了整个应用程序的 turbolinks,移动了 appplication.js 需要列表中的文件顺序。

我希望我能更好地理解 JS 来调整上传脚本,这样它就不会依赖于它似乎依赖于加载的内容。

我在 JS 控制台中没有收到任何错误。它只是加载或不取决于环境。

任何帮助深表感谢。

关于进度条的 JS 注释。在我的测试工作版本中,turbolinks 将继续为重新加载的栏创建容器 div。因此,正在创建空条,但它们根本不会干扰脚本。所以我创建了 div 然后添加了一个调用来删除它,这样如果它已经存在,它将在重新加载时被新的替换。

0 投票
1 回答
1177 浏览

ruby-on-rails - Turbolinks 不友好?

我完全明白为什么 Turbolinks 5 很棒,如果你正在阅读它,你可能也会这样做,但我对它与块上的其他脚本的糟糕表现感到非常沮丧。

迄今为止,还没有简单的解释(人类可读的)来说明如何以允许它们运行的​​方式包装现有的 jQuery 脚本。以这个为例:https ://github.com/Bttstrp/bootstrap-switch 。写的很好,简单易懂。您将 js 和 css 加载到您的资产管道并在某个页面上实例化它。

你去view.html,点击另一个页面,点击返回,你会看到两个按钮。

接下来,您花费 5 个小时寻找一种方法,让 Turbolinks 仅加载一次 bootstrapSwitch 实例(如果之前未加载)。好吧,即使您这样做,该功能也将消失。单击它将不起作用。

$(document).on("turbolinks:load", function()...将在每次 Turbolink 访问时加载它,目前,我可以让它工作而不创建重复项的唯一方法是禁用 view.html 上的缓存

这感觉有点愚蠢。

我认为这一切都与使用幂等有关 - https://github.com/turbolinks/turbolinks#making-transformations-idempotent但你实际上如何做到这一点?

有人可以以这个简单的插件为例,分享一个简单、优雅的解决方案,让它工作,然后我们可以用其他脚本重现吗?

0 投票
1 回答
158 浏览

javascript - Turbolinks 总是像往常一样加载页面

我正在测试Turbolinks是否可以帮助我们的 Web 应用程序看起来更快一些,表现得“几乎像”单页应用程序。

由于我们已经对所有链接的所有点击都有一种“主钩子”,我设置data-turbolinks="false"<body>然后将我们的点击处理程序更改为调用 Turbolinks:

我还禁用了缓存并将根设置为/

但是,我注意到它总是执行标准的页面更改,而不是它的“魔法”。

如果我从控制台调用该方法,也会发生同样的情况,没有显示错误或警告,但页面正常加载,而不是使用 Turbolinks“魔法”。

它唯一有效的时候是访问根地址 ( "/") 时。

除了简单地使用该方法之外,是否涉及更多配置visit()

编辑:

经过进一步测试,我注意到,当调用Turbolinks.visit(url)似乎“失败”时,通过发出正常的页面导航,它在记录时返回一个像这样的对象,如下所示:

当我测试正确加载的唯一地址时,我得到了一个不同的对象:

在第一种情况下,它看起来像一个普通的对象,而第二种看起来更像是一个事件;但是,这无助于确定导致其无法正常工作的问题。

0 投票
1 回答
103 浏览

javascript - 使用 Turbolinks 5 导航时,Disqus 评论显示“不支持浏览器”

当使用 Turbolinks 5 和默认的 Disqus 注释嵌入代码时,您将在控制台中收到“不支持浏览器”错误和警告:“请使用 DISQUS.reset 而不是重新加载 embed.js。”

在 Disqus 文档中使用 AJAX 示例时,embed.js 警告会消失,但不会出现“不支持浏览器”警告。

如何在不禁用 Turbolinks 的情况下解决此问题?

0 投票
1 回答
49 浏览

jquery - Turbolinks 5 javascript not working

I found out that my javascript code would not work when certain links where clicked.

When i set a breakpoint, the following js was not triggered after certain links

This is the link where js works

This is the link where js does not work

0 投票
2 回答
1689 浏览

javascript - Rails Action Cable and Turbolinks: avoid multiple bindings

I have a code in my application.html.haml that decides whether to subscribe the user to a given channel or not, depending on some user attribute.

The thing is that, given I have this piece of code in the body, when I click a link to be redirected to another page, it subscribes the user again instead of keeping the old connection, so I have the receive() method being executed multiple times.

This is my code in application.html.haml:

assets/javascripts/notifications/admin_notifications.js.coffee

The first time the page is loaded, when I broadcast a message to that channel, the console is logging "Data Received" just once. I click a link to be redirected to another page, I broadcast a new message to that channel, and now the console is logging "Data Received" twice. And so far so on...

In fact, when I run on the chrome's console:

It returns multiple subscriptions to the same channel (once for every time I clicked on a link and got redirected to a different page).

Note: There is more action cable setup that I am not adding to this post because it's working fine.

How can I avoid that? Any ideas?

0 投票
1 回答
1402 浏览

javascript - Rails Turbolinks 5:如何在特定页面上运行 JS 代码进入和退出?

我正在使用 Turbolinks 5 和 Rails,试图弄清楚它如何改变游戏规则。

传统上,我的页面通过捆绑包含库(jQuery、Knockout 等)和应用程序特定代码(例如视图模型)的 javascript 来工作 - 所有这些都以某种有组织的结构附加到窗口对象。应用程序区域中的所有控制器,例如前端,将共享相同的 JavaScript(和 CSS)包。

在每个使用 JavaScript 的页面上,都会有一个初始化程序来启动。例如:

这个初始化函数的职责是建立一个淘汰视图模型并将其绑定到某个节点。javascript_configuration 可能包含当前用户的初始化状态。

无论如何,这种方法似乎根本无法与 Turbolinks 配合使用。

我知道它只会在用户users#edit作为第一页访问(或进行硬刷新)时触发,所以$.ready显然不合适。

如果我附加到turbolinks:load事件,上面的代码不仅会在用户进入时触发users#edit,而且还会在用户随后导航到的任何页面上触发(直到他/她在某个时候完全刷新)。

我已经能够通过定义一个在第一次执行后删除回调的函数来解决这个问题。

此外,我还设计了:

这两个函数似乎允许我在页面加载和“卸载”时运行代码。

我的问题是:

  1. 鉴于我必须提出自己的包装函数,我怀疑 Turbolinks 是故意开发的,以阻止我使用的初始化流程。真的吗?
  2. 如果是真的,惯用的方法是什么?我应该如何设置淘汰视图模型,或者就此而言,运行与特定页面相关的任何代码?
  3. 如果不是这样,我如何可靠地为页面设置卸载/离开功能。turbolinks:before-cache用新页面替换缓存页面时不会发出,那么在缓存页面短暂显示后如何清理?turbolinks:before-cache我确实明白,在替换(已经)缓存的页面时不应该触发它在语义上是有意义的,但是它的位置是什么?turbolinks:unload不存在的东西。
0 投票
0 回答
69 浏览

javascript - Rails turbolinks 的 JS 架构理念是什么?

当 TL 是普通的和基本的应用程序时,它们确实可以加速应用程序,但是一旦你冒险走出人迹罕至的道路,让 JS 相互配合就非常棘手。

运行 Turbolinks 时,一般的 JS 控制器/视图理念是什么?我正在处理许多双重初始化和悬空事件,可能是因为一些 $(document) 绑定。

JS 处理程序的适当绑定位置在哪里?由于 DOM 没有被卸载或被缓存,这可能很危险。

你如何初始化页面特定的 JS?你把它们放在 turoblinks:load 事件上吗?

在找到好的设计技术文档方面运气不佳。

感谢大家的帮助。

0 投票
1 回答
661 浏览

ruby-on-rails - Turbolinks.enableTransitionCache 不是函数

我正在尝试在带有 turbolinks 5 的 rails 5.1 应用程序中执行以下操作:

但我不断得到:

TypeError:Turbolinks.enableTransitionCache 不是函数。(在 'Turbolinks.enableTransitionCache()' 中,'Turbolinks.enableTransitionCache' 未定义)

我究竟做错了什么?

0 投票
1 回答
194 浏览

ios - 如何在 turbolinks-ios 应用程序中将 UIBarButtonItem 添加到导航栏

我有一个turbolinks-ios我继承的应用程序,需要添加本机导航。

起初我使用故事板将主应用程序控制器嵌入到导航控制器中,但 turbolinks 有它自己的导航栏,因此创建了两个堆叠的导航栏。然后我从情节提要中删除了导航控制器,但现在我无法将我的按钮添加到默认的 turbolinks 导航栏。没有错误,如果我单步执行代码,它会触及函数中的每一行,但栏中没有显示任何内容。我究竟做错了什么?

我从 UINavigationController 类中调用的函数viewDidLoad()如下...

任何朝着正确方向的轻推将不胜感激。