如何停止chrome / firefox下载gif?


8

当我访问包含某些动画gif的页面(Google +,9gag等)时,所有这些页面似乎都开始加载。我的带宽有限,除非我真的想查看,否则我不希望下载它们。我已经看到一些插件可以停止动画,但是无论如何图像本身都是下载的。9gag.com最初具有此功能,该功能仅显示静态图像(如果是动画gif),并且仅在我单击它(现在已将其删除)后才开始下载。

那么,有没有可以停止下载 gif的插件?或者,我需要编写扩展名吗?有什么建议吗?


我假设您不想阻止所有图像,对吗?问题在于,阻止所有.gif文件非常简单,但是如果您只想阻止动画 .gif文件,那么扩展程序仍然必须下载.gif页面中嵌入的所有文件,以确定它们是否为动画文件。最好的选择是阻止所有GIF。(我只是想到了一个可行的想法,但我认为这个想法没有完成。如果有时间,我会尝试提出一些建议,以防没人知道现有解决方案。)
Synetech

阻止所有gif即可。所有其他图像应可见。我用谷歌搜索,但似乎每个人都在担心动画的干扰。因此,大多数插件只会停止动画。我可以写一个chrome扩展名;但我只是想知道是否还有其他解决方案。
mshsayem 2013年

1
由于动画GIF通常是几兆字节,因此我同意它们可能会很麻烦,尤其是当页面中有多个动画时(您实际上可以创建一个加载有巨型动画GIF的页面的DoS)。我可以找到的少数图像阻止扩展往往是“全部阻止图像”类。但是,有一个Safe Blocker,它具有可选的GIF阻止功能。我目前无法测试,但看起来很有希望。
Synetech

刚刚尝试了Safe Blocker。它只是为您提供了一个代理站点,这绝对不是我想要的。
mshsayem 2013年

啊,真可惜 他们没有提及,但是可以解释审查的进展缓慢。奇怪的是,这还没有解决。也许是因为充满动画GIF的页面仍然很新,所以尚未解决。试试这个用户脚本。它在旧版本的Chromium中不起作用,但在新版本的Chrome中可能起作用。
Synetech 2013年

Answers:


1

我还没有合适的扩展程序/插件。我尝试在Chrome 中将以下用户脚本与TamperMonkey结合使用。运行良好。阻止网站9gag.com中的所有gif(包括ajax gif)。由于某些原因,Google +中的Ajax gif不会被阻止(对此进行调查)。非常感谢Synetec的帮助,努力和代码。这是用户脚本(大多数脚本是从Synetec的userscript复制):

// ==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 +,请更改为。

不幸的是,很多用户已经开始上传扩展名为.jpg的GIF。所谓的动画JPEG。大概是因为有些站点不允许上传GIF,而仅检查扩展名以确定文件类型,所以这种说法是愚蠢的。用同样的方法。我的猜测是,if ($.trim(ext.toLowerCase()) != "gif")它将仅捕获一半的GIF。
2014年

0

一些不错的Firefox插件:

adblock-智能阻止广告

flashblock-所有闪光灯将被阻止,直到您不单击它们

imgblock-阻止所有位置的所有图像(可以暂时禁用单击)

ghostery-阻止社交网站(它们可以使每页访问量增加100 KB!)


我知道这些。但是那些人不做我想要的。即停止下载(不仅仅是使其不可见)只是gif图像。
mshsayem
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.