Javascript 如何在每次单击链接加载新页面时停止加载其他资产?
我有一个奇怪的问题,当我点击项目中的链接时,我会得到一个额外的资产包,每次点击=+1个额外的资产包。10次点击=10份资产副本。(10个图像,10个css文件,10个js文件,而不是1个)。我的所有jquery事件都会触发10次。我甚至不知道从哪里寻找解决办法。如果有任何帮助,我将不胜感激 我的app.jsJavascript 如何在每次单击链接加载新页面时停止加载其他资产?,javascript,jquery,ruby-on-rails,turbolinks,Javascript,Jquery,Ruby On Rails,Turbolinks,我有一个奇怪的问题,当我点击项目中的链接时,我会得到一个额外的资产包,每次点击=+1个额外的资产包。10次点击=10份资产副本。(10个图像,10个css文件,10个js文件,而不是1个)。我的所有jquery事件都会触发10次。我甚至不知道从哪里寻找解决办法。如果有任何帮助,我将不胜感激 我的app.js //= require jquery //= require jquery_ujs //= require foundation //= require
//= require jquery
//= require jquery_ujs
//= require foundation
//= require turbolinks
//= require jquery.easing.1.3.js
//= require_tree .
$(function(){
$(document).foundation();
});
$(document).ready(function () {
var $main_container = $("#main_container");
var $menu_link = $('#menu-link');
var $s_menu = $("#s-menu");
$menu_link.click(function () {
$main_container.animate({"margin-left": "-200px"}, 100);
$s_menu.animate({"margin-right": "0"}, 100);
});
$(".container-fluid").on("click", function(){
$main_container.animate({"margin-left": "0"}, 100);
$s_menu.animate({"margin-right": "-200px"}, 100);
});
$('input[type="submit"]').focus(function(){
$(this).blur();
});
});
============
经过一些实验(我从我的项目中删除了所有js),我觉得问题在于rails缓存。因为每次单击都会迫使浏览器下载新的资产包
============
我发现我的问题在于turbolinks gem,它每次都缓存资产,然后下载新的资产包。但是我如何解决这个问题呢?你在哪里加载
<%= javascript_include_tag "application" %>
如果在正文中的页面底部加载,turbolinks将刷新整个正文标记,这可能导致在单击链接时加载多个资源。将其移动到头部的顶部。在哪里加载
<%= javascript_include_tag "application" %>
如果在正文中的页面底部加载,turbolinks将刷新整个正文标记,这可能导致在单击链接时加载多个资源。将其移动到头部的顶部。我意识到我在调用
主体
标记中的其他脚本。我意识到我在调用主体
标记中的其他脚本