¿Cómo dejar de descargar Chrome / Firefox un gif?

8

Cuando visito cualquier página que contenga algunos mensajes animados gif(Google+, 9gag, etc.), todos parecen comenzar a cargarse. Mi ancho de banda es limitado y no quiero que se descarguen a menos que realmente quiera verlo. He visto algunos complementos que simplemente detienen la animación, pero la imagen en sí misma se descarga de todos modos. 9gag.com tenía inicialmente esta característica que solo mostraba una imagen estática (si es un gif animado) y comenzó a descargarse solo después de hacer clic en ella (ahora la han eliminado).

Entonces, ¿hay algún complemento que pueda detener la descarga de gif? ¿O necesito escribir una extensión? ¿Cualquier sugerencia?

mshsayem
fuente
Supongo que no quieres bloquear todas las imágenes, ¿verdad? El problema con esto es que sería lo suficientemente simple como para bloquear todos los .gifarchivos, pero si desea bloquear solo los .gif archivos animados , la extensión aún tendría que descargar los .gifarchivos incrustados en la página para determinar si están animados o no. Su mejor opción es bloquear todos los GIF. (Solo pensé en una idea que podría funcionar bien, pero no creo que se haya hecho. Si tengo algo de tiempo, intentaré preparar algo en caso de que nadie sepa de una solución existente).
Synetech
Bloquear todo gif hará. Todas las demás imágenes deben ser visibles. Busqué en Google, pero parece que a todos les preocupa la distracción de la animación. Entonces, la mayoría de los complementos simplemente detienen la animación. Podría escribir una extensión de cromo; pero me preguntaba si existe alguna otra solución.
mshsayem
1
Dado que los GIF animados a menudo son de varios megabytes, estoy de acuerdo en que pueden ser bastante molestos, especialmente cuando hay varios en una página (prácticamente podría crear un DoS con una página cargada de GIF animados gigantes). Las pocas extensiones de bloqueo de imágenes que puedo encontrar tienden a ser del tipo bloquear todas las imágenes. Sin embargo, hay Safe Blocker que tiene una función opcional de bloqueo de GIF. No puedo probarlo en este momento, pero parece prometedor.
Synetech
Acabo de probar Safe Blocker . Simplemente te da un sitio proxy que definitivamente no es lo que quiero.
mshsayem
Ah, lástima. No mencionaron eso , pero explicaría la revisión diciendo que es lento . Es extraño que esto no se haya resuelto ya. Tal vez sea porque las páginas llenas de GIF animados aún son bastante nuevas, por lo que aún no se ha abordado. Prueba este script de usuario . No funcionaba en una versión anterior de Chromium, pero puede funcionar en versiones más nuevas de Chrome.
Synetech

Respuestas:

1

Todavía no tengo ninguna extensión / complemento adecuado. Intenté usar el siguiente script de usuario con TamperMonkey en Chrome. Funciona muy bien Bloqueo de todos los gifs (incluidos los gifs de ajax) en el sitio 9gag.com. Por alguna razón, los gifs de ajax en google + no se bloquean (investigando eso). Muchas gracias a Synetec por su ayuda, esfuerzo y código. Aquí está el script de usuario (la mayoría de los scripts se copian del script de usuario de 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);

Ahora:

  1. Instalar TamperMonkey
  2. Ir al panel de control
  3. Haga clic en 'nuevo script'
  4. Pega el código anterior
  5. Guardar y ver si funciona. (ahora solo funciona en 9gag.com. Pero puede cambiar la @matchdirectiva para que coincida con el sitio que desee. use @match http://*/*para trabajar en todos los sitios (http). Cambie a httpscualquier sitio http seguro, por ejemplo, google +)
mshsayem
fuente
Es una pena que muchos usuarios hayan comenzado a cargar GIF con la extensión .jpg. Los llamados JPEG animados . Presumiblemente, esta idiotez se indicó porque algunos sitios no permitirían cargar GIF, sino que solo verificaron la extensión para determinar el tipo de archivo. De la misma manera que lo haces. Supongo que if ($.trim(ext.toLowerCase()) != "gif")solo capturará la mitad de los GIF.
Martin
0

Algunos buenos complementos de Firefox:

adblock: bloqueo inteligente de anuncios

flashblock: se bloqueará todo el flash hasta que no haga clic en ellos

imgblock: bloquea TODAS las imágenes, en todas partes (se puede desactivar temporalmente con un clic)

ghostery: bloquea los sitios de redes sociales (¡pueden hacer más de cien kbytes por visita de página!)

peterh - Restablece a Monica
fuente
Sé sobre esto. Pero esos no hacen lo que quiero. es decir, deje de descargar (no solo hacerlo invisible) solo imágenes gif.
mshsayem