重新启动gif动画而不重新加载文件

是否可以在不下载文件的情况下重新启动gif动画? 我当前的代码如下所示:

var img = new Image(); img.src = 'imgages/src/myImage.gif'; $('#id').css('background-image', 'url("' + img.src + '?x=' + Date.now() + '")' ); 

编辑

当我将gif插入dom时,它没有重新启动gif动画。 我只能通过在图像src中附加一个随机字符串来实现这一点,但这会再次下载图像。

我想知道是否可以重新启动gif动画而无需下载gif。

我有类似的要求。

 var img = document.createElement("img"), imageUrl = "http://sofzh.miximages.com/javascript/love240.gif"; img.src = imageUrl; document.body.appendChild(img); window.restartAnim = function () { img.src = ""; img.src = imageUrl; } 

例如在Facebook上 – 动画表情符号不是.gifs,而是png文件上的一组静态帧,具有动态设置的背景偏移量。 这样你就可以通过javascript完全控制你的动画 – 你甚至可以暂停/取消它或改变它的速度。

可以将.gif文件拆分为单独的框架,并动态生成服务器端的.png文件。

这看起来对我来说是一个很好的周末项目;)

只是让它永远循环? 否则你可以每次(gif的持续时间)使用ajax请求来重新启动它。

即使使用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 } 

这可能对你有帮助,

 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); 

在javascript中创建一个函数,然后在同一个地方重新输入图像。 当你想重播Gif时调用这个函数。

 function replayGif(){ var img = new Image(); img.src = 'imgages/src/myImage.gif'; $('#id').css('background-image', 'url("' + img.src + '?x=' + Date.now() + '")' ); } 

尝试将gif动画的src设置为自身,或者将其设置为空字符串,然后再将原始src设置为空字符串。 ;)

最简单的JavaScript解决方案:

function:

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

通话function:

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

示例: http : //jsfiddle.net/nv3dkscr/