Como parar o download de um gif do chrome / firefox?

8

Quando visito qualquer página que contenha alguns gifs animados (Google+, 9gag etc.), todos parecem começar a carregar. Minha largura de banda é limitada e eu não quero que eles sejam baixados, a menos que eu realmente queira ver. Eu vi alguns plugins que param a animação, mas a imagem em si é baixada de qualquer maneira. O 9gag.com tinha inicialmente esse recurso, que apenas mostrava uma imagem estática (se é um gif animado) e começou a baixar somente depois que eu cliquei nela (eles a removeram agora).

Então, existe algum plugin que possa parar de baixar gif? Ou preciso escrever uma extensão? Alguma sugestão?

mshsayem
fonte
Presumo que você não deseja bloquear todas as imagens, certo? O problema é que seria simples o suficiente para bloquear todos os .gifarquivos, mas se você deseja bloquear apenas .gif arquivos animados , a extensão ainda precisará baixar os .gifarquivos incorporados na página para determinar se eles são animados ou não. Sua melhor aposta é bloquear todos os GIFs. (Acabei de pensar em uma idéia que poderia funcionar bem, mas acho que não foi concluída. Se tiver algum tempo, tentarei criar algo para o caso de ninguém saber de uma solução existente.)
Synetech
Bloquear todos os gif serve. Todas as outras imagens devem estar visíveis. Pesquisei no Google, mas parece que todo mundo está preocupado com a distração da animação. Portanto, a maioria dos plugins apenas interrompe a animação. Eu poderia escrever uma extensão do chrome; mas eu queria saber se existe outra solução.
Mshsayem #
11
Como os GIFs animados costumam ter vários megabytes, concordo que eles podem ser um incômodo, especialmente quando há vários em uma página (você pode praticamente criar um DoS com uma página carregada com GIFs animados gigantes). As poucas extensões de bloqueio de imagem que posso encontrar tendem a ser do tipo bloquear todas as imagens. No entanto, existe o Safe Blocker, que possui uma função opcional de bloqueio de GIF. Não posso testá-lo no momento, mas parece promissor.
Synetech
Apenas tentei o Safe Blocker . Ele apenas fornece um site proxy que definitivamente não é o que eu quero.
Mshsayem #
Ah, que vergonha. Eles não mencionaram isso , mas explicaria a revisão dizendo que é lento . É estranho que isso ainda não tenha sido resolvido. Talvez seja porque as páginas cheias de GIFs animados ainda são relativamente novas, por isso ainda não foram abordadas. Tente este script de usuário . Não funcionou em uma versão antiga do Chromium, mas pode funcionar em versões mais recentes do Chrome.
Synetech

Respostas:

1

Ainda não tenho nenhuma extensão / plugin adequado. Tentei usar o seguinte script de usuário com o TamperMonkey no Chrome. Está funcionando muito bem. Bloqueio de todos os gifs (incluindo gifs de ajax) no site 9gag.com. Por alguma razão, os gifs do ajax no google + não são bloqueados (investigando isso). Muito obrigado à Synetec por sua ajuda, esforço e código. Aqui está o script do usuário (a maioria dos scripts é copiada do script 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 no 9gag.com agora. Mas você pode alterar a @matchdiretiva para corresponder a qualquer site que desejar. use @match http://*/*para trabalhar em todos os sites (http). Altere httpspara qualquer site http seguro, por exemplo, google +)
mshsayem
fonte
Pena que alguns usuários começaram a enviar GIFs com extensão .jpg. Os chamados JPEGs animados . Presumivelmente, essa idiotice foi declarada porque alguns sites não permitiam o upload de GIFs, mas verificaram apenas a extensão para determinar o tipo de arquivo. Da mesma maneira que você faz. Meu palpite é que ele if ($.trim(ext.toLowerCase()) != "gif")irá capturar apenas metade dos GIFs.
Martin
0

Alguns bons addons do Firefox:

adblock - bloqueio inteligente de anúncios

flashblock - todo o flash será bloqueado até você não clicar neles

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

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

peterh - Restabelecer Monica
fonte
Eu sei sobre isso. Mas aqueles não fazem o que eu quero. ou seja, pare de baixar (não apenas torne invisível) apenas imagens gif.
Mshsayem