Перезапустите gif анимацию без перезагрузки файла

Можно ли перезапустить анимацию gif без загрузки файла каждый раз? Мой текущий код выглядит следующим образом:

var img = new Image();
img.src = 'imgages/src/myImage.gif';

$('#id').css('background-image', 'url("' + img.src + '?x=' + Date.now() + '")' );

Edit

Когда я вставляю gif в dom, он не перезапускает gif-анимацию. Я могу достичь этого, добавив случайную строку к изображению src, но это снова загрузит изображение.

Я хочу знать, можно ли перезапустить gif-анимацию, не загружая gif.

Ответ 1

У меня было аналогичное требование.

var img = document.createElement("img"),
    imageUrl = "http://i73.photobucket.com/albums/i231/charma13/love240.gif";
img.src = imageUrl;
document.body.appendChild(img);

window.restartAnim = function () {
    img.src = "";
    img.src = imageUrl;
}

Ответ 2

например, на facebook - анимированные смайлики не являются .gifs, а набором статических фреймов в png файле с динамически установленным смещением фона. Таким образом, вы полностью контролируете свою анимацию из javascript - вы даже можете приостановить/приостановить ее или изменить ее скорость.

Можно разбить ваш .gif файл на отдельные фреймы и сгенерировать файл .png на стороне сервера динамически.

Это выглядит для меня хорошим проектом для выходных;)

Ответ 3

Просто заставьте его навсегда? в противном случае вы могли бы использовать запрос ajax каждый (продолжительность gif), чтобы перезапустить его.

даже с javascript это было бы возможно;

var gif
window.onload=function () {
  gif=document.getElementById('id')
  setInterval(function () {
    gif.src=gif.src.replace(/\?.*/,function () {
      return '?'+new Date()
    })
  },5000)//duration of your gif
}

Ответ 4

restartGif(imgElement){ 
  let element = document.getElementById(imgElement);
  if (element) {
     var imgSrc = element.src;
     element.src = imgSrc; 
  }
}

// Example:

restartGif("gif_box")

Ответ 5

Это может помочь вам,

var img = new Image();
src = 'imgages/src/myImage.gif';
img.src=src;
$('body').append(img);
setInterval(function(){
    t=new Date().getTime();
    $("img").attr("src", src+'?'+t);
},5000);

Ответ 6

создать функцию в javascript, а затем воспроизвести образ в том же месте. когда вы хотите воспроизвести Gif, вызовите эту функцию.

function replayGif(){
   var img = new Image();
   img.src = 'imgages/src/myImage.gif';

   $('#id').css('background-image', 'url("' + img.src + '?x=' + Date.now() + '")' );
}

Ответ 7

Самое простое решение для JavaScript:

Функция:

function restartGif(ImageSelector){
  var imgSrc=document.querySelector(ImageSelector).src;
  document.querySelector(ImageSelector).src=imgSrc;
}

Функция вызова:

restartGif(SELECTOR) // Example: restartGif('.homer')

Пример: http://jsfiddle.net/nv3dkscr/

Ответ 8

Попробуйте установить src анимации gif самому себе или снова установите в пустую строку, за которой следует исходный src.;)