Javascript Rails turbolinks JS文件错误
所有my.js文件如下所示:Javascript Rails turbolinks JS文件错误,javascript,jquery,ruby-on-rails,turbolinks,Javascript,Jquery,Ruby On Rails,Turbolinks,所有my.js文件如下所示: function function_name(){ ..... some code ..... } $(document).ready(function_name); $(document).on('page:load', function_name); 我使用setInterval(一些函数,7000),像$(文档)这样的事件处理程序。不幸的是,如果我通过turbolinks(使用turbolinks会话)向服务器发出多个请求,这些东西会多次调用。实际上,调用的
function function_name(){
.....
some code
.....
}
$(document).ready(function_name);
$(document).on('page:load', function_name);
我使用setInterval(一些函数,7000)
,像$(文档)这样的事件处理程序。不幸的是,如果我通过turbolinks(使用turbolinks会话)向服务器发出多个请求,这些东西会多次调用。实际上,调用的数量等于服务器请求的数量。
例如,我有
和js事件处理程序,处理程序执行的次数与我在TurboLink会话中的请求次数相同。(真烦人)
我希望您了解如何保持turbolinks处于打开状态,并避免在js文件中多次调用。谢谢。您有两个选择:
在执行设置间隔或添加处理程序等操作的代码中,首先检查间隔或处理程序是否已经存在,如果已经存在,则不要添加另一个
附加到类似的“page:before change”
或“page:before unload”
并删除其中的间隔或处理程序
你能解释一下为什么会这样吗?为什么它会执行多次?不用特别看代码,让我给你一个概括性的答案:Turbolinks将页面本身加载到内存中,它基本上将所有常规链接转换为ajax风格的调用,因此Rails只发回新页面的主体,Turbolinks JS将该主体加载到现有页面中。这意味着所有的JS都保留在内存中,所以如果有一个运行间隔,它将保持运行。然后你的page:load
函数会增加另一个间隔,然后它们都会触发。非常感谢,这就是我想听到的)