Como impedir que o Chrome/Firefox baixe um GIF?

Como impedir que o Chrome/Firefox baixe um GIF?

Quando visito qualquer página que contenha alguns gifprogramas animados (Google+, 9gag etc.), todos parecem começar a carregar. Minha largura de banda é limitada e não quero que eles sejam baixados, a menos que eu realmente queira visualizar. Eu vi alguns plugins que simplesmente paramanimaçãomas a imagem em si ébaixadode qualquer forma. 9gag.com tinha inicialmente esse recurso que apenas mostrava uma imagem estática (se for um gif animado) e só começava a baixar depois que eu clicava nela (eles a removeram agora).

Então, existe algum plugin que possa pararbaixandogif? Ou preciso escrever uma extensão? Alguma sugestão?

Responder1

Ainda não tenho nenhuma extensão/plugin adequado. Eu tentei usar o seguinte script de usuário comTamperMonkeyno Chrome. Está funcionando muito bem. Bloqueio de todos os gifs (incluindo gifs ajax) no site 9gag.com. Por alguma razão, os gifs ajax no Google+ não são bloqueados (investigando isso). Muito obrigado aSynetecpor sua ajuda, esforço e código. Aqui está o script do usuário (a maioria dos scripts são copiados deScript de usuário da Synetec):

// ==UserScript==
// @name       gifBlock
// @namespace  http://i.have.no.homepage/
// @version    0.1
// @description  Stops downloading gif images (including ajax gifs) in 9gag.com (or any page if you just fix the @match rule)
// @match      http://*.9gag.com
// @copyright  2012+, Nobody
// ==/UserScript==

function tamperMonkeyWrap()
{   
    function log(m)
    {
        console.log(m);
    }
    function jQWrap($)
    {
        log("Extension execution begins...");

        function blockGifs()
        {        
            $('img').each(function() {
                var $img = $(this),
                    src = $img.attr('src'),
                    w = $img.width(),
                    h = $img.height(),
                    cursor = $img.css('cursor'),
                    parts = src.split('.'),
                    ext = parts[parts.length-1];

                if ($.trim(ext.toLowerCase()) != "gif")
                    return;            

                $img.attr('data-imgurl', src);
                $img.data('cursor', cursor);
                $img.css('cursor', 'pointer');
                $img.addClass('gif-blocked');                
                h = h > 100? h : 100;
                $img.attr('src', '//ipsumimage.appspot.com/'+w+'x'+h+'?l=Gif (Click)');
            }); 
        }

        function interceptAjax () {
            $('body').ajaxComplete(
                function (event, requestData)
                {
                    log("Blocking GIF [Ajax] ...");                
                    blockGifs();
                }
            );
        }

        $(document).ready(function() {
            log("Blocking GIF [Ready]....");
            blockGifs();
            interceptAjax();        
            $(document).on('click', 'img.gif-blocked', function(ev) {            
                var $img = $(this),
                    url = $img.attr('data-imgurl'),
                    cursor = $img.data('cursor');

                $img.attr('src', url);
                $img.css('cursor', cursor);
                $img.removeClass('gif-blocked');
                ev.preventDefault();
                return false;
            });  
        });

        log("Document is not ready yet. trying block just in case it takes time to be _ready_ (google+).");
        blockGifs();
    }

    if (window.jQuery == undefined)
    {
        log("Loading jQuery...");
        var scriptTag = document.createElement('script');
        scriptTag.src = "//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js";
        scriptTag.onload = function(){
            log("jQuery loaded.");
            window.jQuery = jQuery; 
            jQWrap(jQuery);
        };
        document.getElementsByTagName('head')[0].appendChild(scriptTag);
    }
    else
    {
        log("jQuery already included in the page");
        jQWrap(window.jQuery);
    }   
}

var scriptTag = document.createElement('script');
scriptTag.text = '(' + tamperMonkeyWrap.toString() + ')();';
document.getElementsByTagName('head')[0].appendChild(scriptTag);

Agora:

  1. Instale o TamperMonkey
  2. Ir para a dashboard
  3. Clique em 'novo script'
  4. Cole o código acima
  5. Salve e veja se funciona. (funciona apenas em 9gag.com agora. Mas você pode alterar a @matchdiretiva para corresponder a qualquer site que desejar. Use @match http://*/*para funcionar para todos os sites (http). Mude httpspara qualquer site http seguro, por exemplo, Google+)

Responder2

Alguns ótimos complementos do Firefox:

adblock - bloqueio inteligente de anúncios

flashblock - todos os flashes serão bloqueados até que você não clique neles

imgblock - bloqueia TODAS as imagens, em qualquer lugar (pode ser desativado temporariamente com um clique)

ghostery - bloqueia sites de redes sociais (eles podem ganhar mais de cem kbytes por visita à página!)

informação relacionada