1. ホーム
  2. javascript

プログラムでGIFアニメーションを停止させる

2023-07-29 17:40:39

質問

Twitterから直接画像を参照するアプリケーションを開発しています。 アニメーションGIFが再生されないようにするにはどうしたらよいでしょうか。

使用方法 window.stop() を使用すると、Firefox ではうまくいきません。

より良いJavaScriptハックはありますか?できれば、これはすべてのブラウザで動作する必要があります。

どのように解決するのですか?

クロスブラウザ対応ではありませんが、FirefoxとOperaで動作しました(IE8では動作しませんでした:-/)。撮影 をここから

[].slice.apply(document.images).filter(is_gif_image).map(freeze_gif);

function is_gif_image(i) {
    return /^(?!data:).*\.gif/i.test(i.src);
}

function freeze_gif(i) {
    var c = document.createElement('canvas');
    var w = c.width = i.width;
    var h = c.height = i.height;
    c.getContext('2d').drawImage(i, 0, 0, w, h);
    try {
        i.src = c.toDataURL("image/gif"); // if possible, retain all css aspects
    } catch(e) { // cross-domain -- mimic original with all its tag attributes
        for (var j = 0, a; a = i.attributes[j]; j++)
            c.setAttribute(a.name, a.value);
        i.parentNode.replaceChild(c, i);
    }
}