Як зупинити завантаження gif у Chrome / firefox?


8

Коли я заходжу на будь-яку сторінку, що містить деякі анімовані gifs (Google+, 9gag тощо), всі, здається, починають завантажуватися. Моя пропускна здатність обмежена, і я не хочу, щоб їх завантажували, якщо я дійсно не хочу їх переглядати. Я бачив кілька плагінів, які просто зупиняють анімацію, але все-таки зображення завантажується в будь-якому випадку. Спочатку у 9gag.com була ця функція, яка лише показувала статичне зображення (якщо це анімований gif) і почала завантажувати лише після того, як я натиснув на нього (вони її зараз видалили).

Отже, чи є якийсь плагін, який може перестати завантажувати gif? Або мені потрібно написати розширення? Будь-яка пропозиція?


Я припускаю, що ви не хочете блокувати всі зображення правильно? Проблема в цьому полягає в тому, що було б досить просто заблокувати всі .gifфайли, але якщо ви хочете заблокувати лише анімовані .gif файли, тоді розширення все одно доведеться завантажувати будь-які .gifфайли, вбудовані на сторінку, щоб визначити, анімовані вони чи ні. Краще всього заблокувати всі GIF-файли. (Я просто придумав ідею, яка може спрацювати добре, але я не думаю, що це було зроблено. Якщо я знайду якийсь час, я спробую щось
вибити,

Блокування всіх gif буде зроблено. Усі інші зображення повинні бути видимими. Я гуглив, але, здається, всі стурбовані відволіканням анімації. Отже, більшість плагінів просто зупиняють анімацію. Я міг написати хромоване розширення; але мені було просто цікаво, чи існує якесь інше рішення.
mshsayem

1
Оскільки анімовані GIF-файли часто мають декілька мегабайт, я погоджуюся, що вони можуть бути неприємними труднощами, особливо коли на сторінці їх є декілька (ви можете практично створити DoS зі сторінкою, завантаженою гігантськими анімовані GIF). Кілька розширень блокування зображень, які я можу знайти, мають вигляд блоку всіх зображень. Однак є Safe Blocker, який має додаткову функцію блокування GIF. Наразі це не можу перевірити, але це виглядає перспективно.
Synetech

Щойно спробував Safe Blocker . Це просто дає вам проксі-сайт, який точно не є тим, що я хочу.
mshsayem

Ах, сором. Вони не згадували про це , але це пояснило б огляд, кажучи, що це повільно . Дивно, що це вже не вирішено. Можливо, це тому, що сторінки, наповнені анімованими GIF-тами, все ще є досить новими, тому його ще не було розглянуто. Спробуйте цей сценарій користувача . Він не працював у старій версії Chromium, але може працювати в новіших версіях Chrome.
Synetech

Відповіді:


1

У мене ще немає відповідного розширення / плагіна. Я спробував використовувати наступний сценарій користувача з TamperMonkey в Chrome. Це чудово працює. Блокування всіх gif-файлів (включаючи ajax gif) на сайті 9gag.com. Чомусь gifa gifa ajax в google + не блокується (досліджуючи це). Велика подяка Synetec за допомогу, зусилля та код. Ось сценарій користувача (більшість сценаріїв скопійовано з користувальницького сценарію 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);

Зараз:

  1. Встановіть TamperMonkey
  2. Перейдіть на панель приладів
  3. Клацніть на "новий сценарій"
  4. Вставте вищевказаний код
  5. Збережіть і подивіться, чи працює він. (зараз працює лише на 9gag.com. Але ви можете змінити @matchдирективу, щоб вона відповідала будь-якому потрібному вам сайту. Використовуйте @match http://*/*для роботи на всіх сайтах (http). Змініть на httpsбудь-який захищений http-сайт, наприклад, google +)

На жаль, що досить багато користувачів почали завантажувати GIF-файли з розширенням .jpg. Так звані анімовані JPEG . Імовірно, ця ідіотичність вказана тому, що деякі сайти не дозволять завантажувати GIF, а перевіряють лише розширення для визначення типу файлу. Так само, як і ви. Я здогадуюсь, що if ($.trim(ext.toLowerCase()) != "gif")охопить лише половину GIF.
Мартін

0

Деякі приємні пристрої для Firefox:

adblock - інтелектуальне блокування реклами

flashblock - весь спалах буде заблокований, поки ви не натиснете на них

imgblock - блокує ВСІ зображення, скрізь (можна натиснути тимчасово відключеним)

ghostery - блокує сайти соціальних мереж (вони можуть заробляти більше сотні кбайт за кожне відвідування сторінки!)


Я знаю про них. Але ті не роблять, що я хочу. тобто перестаньте завантажувати (не просто робити його невидимим) лише gif-зображення.
mshsayem
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.