Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails turbolinks JS文件错误_Javascript_Jquery_Ruby On Rails_Turbolinks - Fatal编程技术网

Javascript Rails turbolinks 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会话)向服务器发出多个请求,这些东西会多次调用。实际上,调用的

所有my.js文件如下所示:

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
    函数会增加另一个间隔,然后它们都会触发。非常感谢,这就是我想听到的)