Wie kann ich verhindern, dass Chrome / Firefox ein GIF herunterlädt?

8

Wenn ich eine Seite besuche, die einige animierte gifs enthält (Google+, 9gag usw.), scheinen alle diese Seiten zu laden. Meine Bandbreite ist begrenzt und ich möchte nicht, dass diese heruntergeladen werden, es sei denn, ich möchte sie wirklich anzeigen. Ich habe einige Plugins gesehen, die nur die Animation stoppen, aber das Bild selbst wird trotzdem heruntergeladen . 9gag.com hatte ursprünglich diese Funktion, die nur ein statisches Bild zeigte (wenn es sich um ein animiertes GIF handelt) und erst nach dem Klicken mit dem Herunterladen begann (sie haben es jetzt entfernt).

Gibt es ein Plugin, das das Herunterladen von GIF beenden kann ? Oder muss ich eine Erweiterung schreiben? Irgendein Vorschlag?

mshsayem
quelle
Ich nehme an, Sie möchten nicht alle Bilder blockieren , oder? Das Problem dabei ist, dass es einfach genug wäre, alle .gifDateien zu blockieren. Wenn Sie jedoch nur animierte .gif Dateien blockieren möchten , muss die Erweiterung weiterhin alle auf .gifder Seite eingebetteten Dateien herunterladen, um festzustellen, ob sie animiert sind oder nicht. Am besten blockieren Sie alle GIFs. (Ich habe gerade an eine Idee gedacht, die gut funktionieren könnte, aber ich glaube nicht, dass sie umgesetzt wurde. Wenn ich etwas Zeit habe, werde ich versuchen, etwas
aufzupeitschen,
Das Blockieren aller GIFs reicht aus. Alle anderen Bilder sollten sichtbar sein. Ich habe gegoogelt, aber anscheinend sind alle besorgt über die Ablenkung der Animation. Die meisten Plugins stoppen also einfach die Animation. Ich könnte eine Chrome-Erweiterung schreiben; aber ich habe mich nur gefragt, ob es eine andere Lösung gibt.
mshsayem
1
Da animierte GIFs oft mehrere Megabyte groß sind, stimme ich zu, dass sie ziemlich lästig sein können, insbesondere wenn eine Seite mehrere enthält (Sie könnten praktisch ein DoS mit einer Seite erstellen, die mit riesigen animierten GIFs geladen ist). Die wenigen bildblockierenden Erweiterungen, die ich finden kann, sind in der Regel alle Bilder blockieren. Es gibt jedoch Safe Blocker mit einer optionalen GIF-Blockierungsfunktion. Ich kann es momentan nicht testen, aber es sieht vielversprechend aus.
Synetech
Ich habe gerade Safe Blocker ausprobiert . Es gibt Ihnen nur eine Proxy-Site, die definitiv nicht das ist, was ich will.
mshsayem
Ah, schade. Sie haben das nicht erwähnt , aber es würde die Bewertung erklären, dass es langsam ist . Es ist seltsam, dass dies noch nicht gelöst wurde. Vielleicht liegt es daran, dass Seiten voller animierter GIFs noch ziemlich neu sind und daher noch nicht angesprochen wurden. Versuchen Sie dieses Benutzer-Skript . In einer alten Version von Chromium hat es nicht funktioniert, in neueren Versionen von Chrome jedoch möglicherweise.
Synetech

Antworten:

1

Ich habe noch keine passende Erweiterung / Plugin. Ich habe versucht, das folgende Benutzerskript mit TamperMonkey in Chrome zu verwenden. Es funktioniert großartig. Blockieren aller Gifs (einschließlich Ajax-Gifs) auf der Website 9gag.com. Aus irgendeinem Grund werden Ajax-Gifs in Google + nicht blockiert (dies wird untersucht). Vielen Dank an Synetec für seine Hilfe, seinen Einsatz und seinen Code. Hier ist das Benutzerskript (die meisten Skripte werden aus dem Benutzerskript von Synetec kopiert ):

// ==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);

Jetzt:

  1. Installieren Sie TamperMonkey
  2. Zum Dashboard gehen
  3. Klicken Sie auf "Neues Skript".
  4. Fügen Sie den obigen Code ein
  5. Speichern und prüfen, ob es funktioniert. (Funktioniert jetzt nur auf 9gag.com. Sie können die @matchDirektive jedoch so ändern , dass sie mit jeder gewünschten Site übereinstimmt. Verwenden Sie diese Option @match http://*/*, um für alle Sites (http) zu arbeiten. Wechseln Sie zu httpsfür jede gesicherte http-Site, z. B. Google +.)
mshsayem
quelle
Schade, dass einige Benutzer damit begonnen haben, GIFs mit der Erweiterung .jpg hochzuladen. Sogenannte animierte JPEGs . Vermutlich wurde diese Idiotie angegeben, weil einige Websites das Hochladen von GIFs nicht zuließen, sondern nur die Erweiterung überprüften, um den Dateityp zu bestimmen. Genauso wie du es machst. Ich vermute, dass if ($.trim(ext.toLowerCase()) != "gif")nur die Hälfte der GIFs abgefangen wird.
Martin
0

Einige nette Firefox-Addons:

adblock - intelligentes Blockieren von Anzeigen

Flashblock - Alle Flashs werden blockiert, bis Sie nicht mehr darauf klicken

imgblock - blockiert ALLE Bilder überall (kann mit einem Klick vorübergehend deaktiviert werden)

Ghostery - blockiert die Social-Networking-Sites (sie können mehr als hundert KByte pro Seitenbesuch machen!)

Peter - Setzen Sie Monica wieder ein
quelle
Ich weiß davon. Aber die machen nicht was ich will. dh hören Sie auf, nur GIF-Bilder herunterzuladen (nicht nur unsichtbar zu machen).
mshsayem