Как остановить загрузку картинок в chrome / firefox?


8

Когда я gifзахожу на любую страницу, содержащую анимированные картинки (Google+, 9gag и т. Д.), Все они начинают загружаться. Моя пропускная способность ограничена, и я не хочу, чтобы те загружались, если я действительно не хочу просматривать. Я видел некоторые плагины, которые просто останавливают анимацию, но само изображение все равно загружается . Первоначально на 9gag.com была эта функция, которая просто показывала статичное изображение (если это анимированный GIF-файл) и начала скачивать только после того, как я нажал на него (теперь его удалили).

Итак, есть ли плагин, который может остановить загрузку GIF? Или мне нужно написать расширение? Любое предложение?


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

Блокировка всех GIF будет делать. Все остальные изображения должны быть видны. Я гуглил, но, похоже, все обеспокоены отвлечением анимации. Итак, большинство плагинов просто останавливают анимацию. Я мог бы написать расширение Chrome; но мне было просто интересно, существует ли какое-либо другое решение.
Мшсаем

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

Только что попробовал Safe Blocker . Это просто дает вам прокси-сайт, который определенно не то, что я хочу.
Мшсаем

Ах, позор. Они не упоминали об этом , но это объяснило бы, что обзор медленный . Странно, что это еще не решено. Возможно, это потому, что страницы, заполненные анимированными GIF-файлами, все еще довольно новы, поэтому они еще не решены. Попробуйте этот скрипт пользователя . Он не работал в старой версии Chromium, но может работать и в новых версиях Chrome.
Synetech

Ответы:


1

У меня пока нет подходящего расширения / плагина. Я попытался использовать следующий пользовательский скрипт с TamperMonkey в Chrome. Работает отлично. Блокировка всех GIF-файлов (в том числе AJAX) на сайте 9gag.com. По какой-то причине ajax gif в 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.
Мшсаем
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.