Я хочу, чтобы gif играл при нажатии и останавливался при повторном нажатии. Я следую этот метод: http://www.hongkiat.com/blog/on-click-animated-gif/play/stop gif on click using javascript
До сих пор у меня есть:
HTML
<figure>
<img src="test.png" alt="Static Image" data-alt="test.gif"/>
</figure>
<script src="playGif.js" type="text/javascript"></script>
playGif.js
(function($) {
// retrieve gif
var getGif = function() {
var gif = [];
$('img').each(function() {
var data = $(this).data('alt');
gif.push(data);
});
return gif;
}
var gif = getGif();
// pre-load gif
var image = [];
$.each(gif, function(index) {
image[index] = new Image();
image[index].src = gif[index];
});
// swap on click
$('figure').on('click', function() {
var $this = $(this),
$index = $this.index(),
$img = $this.children('img'),
$imgSrc = $img.attr('src'),
$imgAlt = $img.attr('data-alt'),
$imgExt = $imgAlt.split('.');
if($imgExt[1] === 'gif') {
$img.attr('src', $img.data('alt')).attr('data-alt', $imgSrc);
} else {
$img.attr('src', $imgAlt).attr('data-alt', $img.data('alt'));
}
});
})(jQuery);
Вместо того, чтобы поменять местами содержимое ЦСИ и данных- alt, это только помещает data-alt в src, а data-alt остается неизменным.
GIF воспроизводится по щелчку, но если нажать снова, он перезагружает gif вместо того, чтобы возвращаться к png (по крайней мере, в Chrome и Firefox. IE просто ничего не делает при последующих кликах).
Лично я хотел бы использовать класс или тег данных для отметки, если в настоящее время это gif или png, проверка расширения файла каждый раз немного беспорядочна и сломается, если имя изображения имеет '.' перед расширением. – DBS
Является ли ваш фактический код, используя эти имена для imgs? ... если не единственная проблема, которую я вижу, это когда код разбивает src для gif, если путь имеет более одного '.', тогда' $ imgExt [1] 'бесполезен http://codepen.io/ anon/pen/LRrZqx – DaniP
Возможный дубликат [Остановка анимации GIF Programmatically] (http://stackoverflow.com/questions/3688460/stopping-gif-animation-programmatically) –