mirror of
https://github.com/janeczku/calibre-web
synced 2024-12-26 10:00:37 +00:00
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");
|
||||||
@ -123,9 +128,18 @@ $(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");
|
||||||
|
|
||||||
|
// 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) {
|
$.get(e.relatedTarget.href).done(function(content) {
|
||||||
$modalBody.html(content);
|
$modalBody.html(content);
|
||||||
|
preFilters.remove(useCache);
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.on("hidden.bs.modal", function() {
|
.on("hidden.bs.modal", function() {
|
||||||
|
Loading…
Reference in New Issue
Block a user