问题标签 [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 投票
0 回答
50 浏览

jquery - 使用和不使用 Turbolinks 执行 JS 代码(使用 jQuery)

我想在页面加载时执行代码(使用 jQuery)。我希望它可以在没有 Turbolinks 的情况下使用 AND。

对于 Turbolinks,代码如下:

我还需要修改什么才能使其在没有 Turbolinks 的情况下也能正常工作?

谢谢

0 投票
1 回答
4327 浏览

ruby-on-rails - Turbolinks Rails 5的浏览器后退按钮上的JQuery插件初始化

在使用 Rails 5 中的 turbolinks(如 masterslider(照片库)或 slick(carousel))时,在浏览器后退按钮上初始化 jquery 插件不仅仅是转换元素,还有什么比我在下面重新加载页面更好的解决方案?

为了清楚起见,我检查'turbolinks:load'是否有任何html元素只有在插件已初始化时才会出现,如果是这样,那么刷新页面,因为即使元素在那里,插件也是'没有初始化。然后我在所有具有我想要的类的元素上初始化插件。

有些人在这里遇到了这个问题:https ://github.com/turbolinks/turbolinks/issues/106有人指出

我只想为那些有类似问题的人补充一点,在某些情况下,使初始化函数幂等不一定是解决方案。使用 dataTables 完成后,我能够避免重复元素。但是,页面上与插件相关的元素的缓存版本在浏览器返回单击时不再起作用,因为似乎插件未在缓存页面中初始化。

如果插件已经更改了 DOM,则重新加载页面,因为当有人按下后退按钮时它会从缓存中检索出来,这看起来很糟糕,但它是我想出的最好的,所以我转向世界寻求更多想法!

更新:

所以一些 jquery 插件有很好的 'undo'/'destroy' 方法,如果是这种情况,最好添加一个事件侦听器"turbolinks:before-cache",然后像这样调用该方法:

但是一些 jquery 插件没有破坏函数或破坏函数来实现这一点。就像 masterslider 有一个$('your-slider-element').masterslider('destroy')功能一样,但它并没有“撤消”它应用于您的 html 的 javascript 魔法,而是完全摆脱它,所以当您从浏览器返回或前进按钮返回页面时,滑块根本不存在,因为触发它的 html 元素已被破坏。这意味着对于某些插件,我仍然拥有的最佳答案是在通过浏览器后退和前进按钮导航到它们所在的页面时完全重新加载页面。

0 投票
1 回答
382 浏览

android - 如何为在 Android 上运行的 Turbolinks 5 添加文件/相机上传功能?

当您尝试使用 turbolinks-android 包上传文件时,没有任何反应。据推测,这是因为您需要编写自己的文件上传器处理程序?

如何才能做到这一点?我希望用户能够按下上传按钮,然后拍照并将其附加到 HTML 文件字段。

另外,这将如何在 turbolinks-ios 上完成?

0 投票
1 回答
2970 浏览

ruby-on-rails-5 - Rails Turbolinks 5 导致 ui 闪烁?

我的 Rails 应用程序在过渡期间闪烁。Turbolinks 似乎是罪魁祸首。有谁知道如何停止闪烁或为什么闪烁?

如果您访问下面的链接并单击任何登录按钮,您将复制我所经历的。

奇怪的是,从 firefox 或 safari 访问它时没有问题。这只发生在最新版本的 chrome 和 Internet Explorer 上?所以我不确定这是否是浏览器的问题。

0 投票
1 回答
1170 浏览

javascript - Rails 5,Turbolinks 5 JQuery 停止处理页面重新加载

我已经看到这个问题在这里发布了几次,但没有一个解决方案对我有用,包括 Rails Guide 中的解决方案。下面我的代码有什么问题吗?本质上,当页面最初加载时,JQuery 工作,但是当您重新加载页面时,一切都停止工作。我是 Rails 菜鸟,非常感谢您的帮助和耐心。

应用程序/javascripts/application.js

0 投票
1 回答
1121 浏览

javascript - 防止使用 turbolinks 多次加载谷歌地图

我正在使用 rails 5 和 turbolinks 5,我不想禁用 turbolinks,但它正在多次加载 google maps api。

我进行了很多搜索,找到了很多适用于 rails 4 和 turbolinks 3 的解决方案。我尝试了所有看到的解决方案,但没有一个有效。

其中一个看起来很简单:

但仍然多次加载谷歌地图。

其中另一个是:

但都没有工作。

一个有希望的解决方案是:

但是这个有时不会在地图初始化之前加载谷歌地图,有时它会返回多次加载的错误。

我读了很多书,有很多问题都问同样的问题,但我没有在其中任何一个中找到可行的解决方案。

PD:我现在看到我删除了谷歌地图的 api 密钥,它仍然可以工作,但我在控制台中看到了一条错误消息。

如果我在生产中使用没有 api 密钥的谷歌地图会有什么问题吗?

0 投票
1 回答
435 浏览

jquery - Turbolinks, access clicked object

For some links I need to keep the scroll position between Turbolinks load. This is simple to do with something along the lines of

My page, however, also have other links where keeping the scroll position would be very strange (links to unrelated content). My plan was to add a data tag to the link:

Then add a basic if statement to the script setting the scroll. Something like this just to illustrate:

Now, the problem I have run into is that I cannot find any way to access the clicked object. $(this), in the example above seems to merely go back to the trigger event in Turbolinks. event, seems to only contain a limited range on information passed on by Turbolinks trigger too. Even.target seems to have a jQuery guid, but I am not sure if that links to the link object or how to use it.

So, to cut a long question short: Is there a way to access the link object that was actually clicked to initiate the turbolinks:click?

Thanks! Charlie

0 投票
1 回答
316 浏览

android - Turbolinks 5 和 Android:使用文件上传时失败 (webview)

问题

当用户点击时choose file,我会原生拦截该点击并调用原生视图(模型中的屏幕 3)。

用户选择要上传的文件后,我需要“重新加载”视图,以便在表单中添加文件名,以便用户得到正确选择文件的反馈。

为此,我onRestart使用以下代码调用:

如您所见,在此方法中,当上传文件时,我不会使用TurbolinksSession.

但如果我不打电话TurbolinksSession,Turbolinks 永远不会打电话visitProposedToLocationWithAction

设想

新样机 1

注意:如果您想看到更大的图像,请下载图像。

我错过了什么?有没有办法解决这个问题并获得预期的结果?

0 投票
1 回答
86 浏览

android - 在 Android 上找不到 TurbolinksView

我对 Android 比较陌生。我正在尝试为使用 turbolinks 构建的 Rails 站点实现 Web 包装器。我正在关注 github 上 turbolinks-android repo 上的自述文件,但我遇到了这一行的问题,turbolinksView = (TurbolinksView) findViewById(R.id.turbolinks_view); 看起来 Android 无法turbolinks_view在清单中找到该元素。我将在下面发布所有代码。任何帮助将非常感激。:)

MainActivity.java

activity_main.xml

安卓清单

构建.gradle

Error:(20, 9) error: cannot find symbol variable turbolinksView

0 投票
1 回答
300 浏览

android - Turbolinks Adapter 无法应用于 MainActivity

我正在关注 turbolinks-android 文档https://github.com/turbolinks/turbolinks-android.adapter(this) ,尝试为使用 turbolinks 5 构建的 Rails 站点设置 android 包装器。在 Main Activity 中遇到此行的问题. 下面我将发布我的 MainActivity.java 和堆栈跟踪。所有其他代码与我在此处发布的上一个问题相同(TurbolinksView not being found on Android)。任何帮助表示赞赏。谢谢 :)

MainActivity.java:

堆栈跟踪: