Я пытаюсь перезапустить GIF-файл, когда пользователь нажимает на него, без необходимости перезагружать его (мой GIF-файл слишком тяжел для этого, я фактически предварительно загружаю его для своего приложения). Мой текущий код прекрасно работает в Chrome и во всех «современных браузерах», но мне нужно, чтобы он работал и в IE11 , и вот тут начинается борьба.
Вот пример кода , который отлично работает на Chrome, но не на IE11:
Вы также можете найти его на jsFiddle: https://jsfiddle.net/c6hodyh2/3/
Вы можете найти другой (не) рабочий пример проблемы (идеально подходит для Chrome, не работает с IE): https://codepen.io/InSightGraphics/pen/CAlci
Что я пробовал до сих пор
Попытка 1
С этого SO вопроса я попробовал следующий код JS, чтобы "принудительно" обновить кэш:
function activate_gif(){
document.getElementById("img1").src = "";
document.getElementById("img1").src = "https://i.imgur.com/Rsc0qOw.gif";
}
Результат: Безуспешно, он абсолютно не отличался от моего исходного кода.
Попытка 2
Начиная с этой статьи я пытался обновить содержимое innerHTML:
function activate_gif(){
document.getElementById("img1").style.display = '';
document.getElementById("img1").innerHTML = document.getElementById("img1").innerHTML;
}
Результат: Без изменений в IE, и он перестал работать в других браузерах, поэтому я предполагаю, что это вызвало ошибку консоли.
Попытка 3
Из этого SO вопроса я пытался использовать упрощенную версию решения, в основном, заставляя изображение загружаться снова, добавляя случайный суффикс к исходному URL:
function activate_gif(){
document.getElementById('myImg').src = 'mysrc.gif?' + Math.random();
}
Результат: Это перезагружает GIF, который самостоятельно решает проблему с кешем. Однако GIF-файлы, которые я использую в своем реальном приложении, слишком тяжелые, поэтому, если изображение необходимо загружать каждый раз, когда пользователь нажимает кнопку, это приводит к ухудшению работы пользователя, особенно для пользователей с более низкой пропускной способностью.
Попытка 4
Исходя из ответа @ IStepashka, я попытался сначала установить (случайное и найденное в Интернете) пустое изображение перед установкой моего исходного источника:
function activate_gif(){
document.getElementById("img1").src = "https://i.ytimg.com/vi/f3cLOucMpD0/maxresdefault.jpg";
document.getElementById("img1").src = "https://i.imgur.com/Rsc0qOw.gif";
}
Результат: То же, что и попытка 1 , ничего не изменилось. Мой код все еще работает на Chrome, но не на IE.