Prevent jQuery from cache busting static assets
If the HTML that's returned from the `$.get` request contains a `<script src="..."/>` tag it loads the JavaScript file via ajax, and by default it attaches a timestamp to it to bust cache. That means the file loads every time the modal is opened, and the browser treats it as a new file each time. The result is that code fires multiple times and events listeners are added multiple times.
This commit is contained in:
		
							parent
							
								
									d799b859ea
								
							
						
					
					
						commit
						d85e0b96dc
					
				| 
						 | 
					@ -4,6 +4,11 @@ var updateText;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(function() {
 | 
					$(function() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Allow ajax prefilters to be added/removed dynamically
 | 
				
			||||||
 | 
					    // eslint-disable-next-line new-cap
 | 
				
			||||||
 | 
					    const preFilters = $.Callbacks();
 | 
				
			||||||
 | 
					    $.ajaxPrefilter(preFilters.fire);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function restartTimer() {
 | 
					    function restartTimer() {
 | 
				
			||||||
        $("#spinner").addClass("hidden");
 | 
					        $("#spinner").addClass("hidden");
 | 
				
			||||||
        $("#RestartDialog").modal("hide");
 | 
					        $("#RestartDialog").modal("hide");
 | 
				
			||||||
| 
						 | 
					@ -122,15 +127,24 @@ $(function() {
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $("#bookDetailsModal")
 | 
					    $("#bookDetailsModal")
 | 
				
			||||||
      .on("show.bs.modal", function(e) {
 | 
					        .on("show.bs.modal", function(e) {
 | 
				
			||||||
        var $modalBody = $(this).find(".modal-body");
 | 
					            const $modalBody = $(this).find(".modal-body");
 | 
				
			||||||
        $.get(e.relatedTarget.href).done(function(content) {
 | 
					
 | 
				
			||||||
          $modalBody.html(content);
 | 
					            // Prevent static assets from loading multiple times
 | 
				
			||||||
 | 
					            const useCache = (options) => {
 | 
				
			||||||
 | 
					                options.async = true;
 | 
				
			||||||
 | 
					                options.cache = true;
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					            preFilters.add(useCache);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $.get(e.relatedTarget.href).done(function(content) {
 | 
				
			||||||
 | 
					                $modalBody.html(content);
 | 
				
			||||||
 | 
					                preFilters.remove(useCache);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        .on("hidden.bs.modal", function() {
 | 
				
			||||||
 | 
					            $(this).find(".modal-body").html("...");
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
      })
 | 
					 | 
				
			||||||
      .on("hidden.bs.modal", function() {
 | 
					 | 
				
			||||||
        $(this).find(".modal-body").html("...");
 | 
					 | 
				
			||||||
      });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $(window).resize(function(event) {
 | 
					    $(window).resize(function(event) {
 | 
				
			||||||
        $(".discover .row").isotope("reLayout");
 | 
					        $(".discover .row").isotope("reLayout");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user