javascript没有'除非刷新,否则无法加载

javascript doesn't load unless I refresh

本文关键字:加载 刷新 没有 javascript      更新时间:2023-09-26

我在$(document).ready()中有一些jquery,但除非刷新页面,否则这个jquery代码不会在我的页面上运行。然后,它在以后的每次刷新中都起作用。为什么会出现这种情况?

我只是添加了javascript和html标签,但我在rails应用程序中工作,不确定这是否会使事情复杂化。

根据您的涡轮链接版本,您必须使用正确的语法来覆盖文档加载事件。对于涡轮连杆5:

而不是

$(document). ready(function () {
....
})

使用

var documentready = function(){
}
$(document). on('turbolinks:load',  documentready); 

刷新时,这将优雅地回退到文档就绪事件。

为什么这是必要的?

Turbolinks绑定位置更改(如单击链接)并使用Ajax加载部分。文档未加载。此外,它还操纵浏览器的历史记录来记录访问。

因此,资产不会在每次访问时加载。快速的这就是为什么document-ready不会绑定到所有事件,除非所有侦听器都以body或document为目标(例如$("body").on("click","selector",function()...而不是$("selector").on('click', function()...

出现此问题的原因是旧版本的涡轮链接中的一些关键事件与新的涡轮链接5不兼容。

我建议下载gem jquery-turbolinks,确保需要application.js

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

和兼容性脚本。你可以在这里找到脚本,只需在assets/javascripts 下创建一个compatibility.coffee

这将允许您使用旧语法。$(document).ready...