Come interrompere il download di Chrome / Firefox su una GIF?


8

Quando visito qualsiasi pagina contenente alcuni messaggi animati gif(Google+, 9gag ecc.), Tutti sembrano iniziare a caricarsi. La mia larghezza di banda è limitata e non voglio che vengano scaricati a meno che non voglia davvero visualizzarli. Ho visto alcuni plugin che bloccano l' animazione ma l'immagine stessa viene comunque scaricata . 9gag.com inizialmente aveva questa funzione che mostrava solo un'immagine statica (se si tratta di una gif animata) e ha iniziato a scaricare solo dopo aver fatto clic su di essa (l'hanno rimossa ora).

Quindi, c'è qualche plugin che può smettere di scaricare gif? O devo scrivere un'estensione? Qualche suggerimento?


Presumo che tu non voglia bloccare tutte le immagini giusto? Il problema è che sarebbe abbastanza semplice bloccare tutti i .giffile, ma se si desidera bloccare solo i .gif file animati , l'estensione dovrebbe comunque scaricare tutti i .giffile incorporati nella pagina per determinare se sono animati o meno. La soluzione migliore è bloccare tutte le GIF. (Ho appena pensato a un'idea che potrebbe funzionare bene, ma non credo che sia stata fatta. Se avrò del tempo, proverò a montare qualcosa nel caso in cui nessuno sappia di una soluzione esistente.)
Synetech

Il blocco di tutte le gif farà. Tutte le altre immagini dovrebbero essere visibili. Ho cercato su Google, ma sembra che tutti siano preoccupati per la distrazione dell'animazione. Quindi, la maggior parte dei plugin interrompe l'animazione. Potrei scrivere un'estensione di Chrome; ma mi chiedevo solo se esistesse un'altra soluzione.
mshsayem,

1
Poiché le GIF animate sono spesso diversi megabyte, sono d'accordo che possono essere piuttosto fastidiosi, specialmente quando ce ne sono diversi in una pagina (potresti praticamente creare un DoS con una pagina caricata con gigantesche GIF animate). Le poche estensioni per il blocco delle immagini che riesco a trovare tendono ad essere del tipo block-all-images. Vi è tuttavia Safe Blocker che ha una funzione opzionale di blocco GIF. Non posso provarlo al momento, ma sembra promettente.
Synetech,

Ho appena provato Safe Blocker . Ti dà solo un sito proxy che non è sicuramente quello che voglio.
mshsayem,

Ah, vergogna. Non l' hanno menzionato , ma spiegherebbe la recensione dicendo che è lento . È strano che questo non sia già stato risolto. Forse è perché le pagine piene di GIF animate sono ancora abbastanza nuove, quindi non sono ancora state affrontate. Prova questo script utente . Non funzionava con una vecchia versione di Chromium, ma potrebbe funzionare con le versioni più recenti di Chrome.
Synetech,

Risposte:


1

Non ho ancora nessuna estensione / plugin adatto. Ho provato a utilizzare il seguente script utente con TamperMonkey in Chrome. Funziona benissimo. Bloccando tutte le gif (comprese le gif di Ajax) nel sito 9gag.com. Per qualche motivo, le gif di Ajax in google + non vengono bloccate (indagando su questo). Mille grazie a Synetec per il suo aiuto, impegno e codice. Ecco lo script utente (la maggior parte degli script viene copiata dallo script utenti di 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);

Adesso:

  1. Installa TamperMonkey
  2. Vai a CRUSCOTTO
  3. Fai clic su "nuovo script"
  4. Incolla il codice sopra
  5. Salva e vedi se funziona. (funziona solo su 9gag.com ora. Ma puoi modificare la @matchdirettiva in modo che corrisponda a qualsiasi sito desideri. utilizzare @match http://*/*per funzionare per tutti i siti (http). Passare a httpsper qualsiasi sito http sicuro, ad esempio google +)

Peccato che parecchi utenti abbiano iniziato a caricare GIF con estensione .jpg. I cosiddetti JPEG animati . Presumibilmente questa idiozia affermava che alcuni siti non consentivano il caricamento di GIF ma controllavano solo l'estensione per determinare il tipo di file. Allo stesso modo in cui lo fai. La mia ipotesi è che if ($.trim(ext.toLowerCase()) != "gif")cattureranno solo metà delle GIF.
Martin,

0

Alcuni componenti aggiuntivi per Firefox:

adblock - blocco intelligente degli annunci

flashblock: tutto il flash verrà bloccato fino a quando non si fa clic su di essi

imgblock - blocca TUTTE le immagini, ovunque (può essere disattivato temporaneamente con un clic)

ghostery - blocca i siti di social network (possono fare più di cento kbyte per visita della pagina!)


So di questi. Ma quelli non fanno quello che voglio. cioè interrompere il download (non solo renderlo invisibile) solo immagini gif.
mshsayem,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.