Firefox - 设置/扩展可在显示和隐藏所有图像之间切换,而无需重新加载页面

Firefox - 设置/扩展可在显示和隐藏所有图像之间切换,而无需重新加载页面

我正在寻找一个 Firefox 设置或扩展,可以轻松地在显示和隐藏所有图像之间切换而无需重新加载页面(类似于 Opera 的功能 - “仅显示缓存图像”功能是可取的,但对我来说是可选的)。

我发现了一个可以显示/隐藏图像的扩展(图片显示隐藏),但需要重新加载页面才能显示/隐藏图像。

我希望在取消隐藏先前设置为隐藏所有图像的页面时不要重新加载页面。

答案1

图像首选项是一款无需重新加载即可切换图像显示的扩展程序,不过主页确实提到它在某些(未命名的)情况下可能无法工作。我注意到,如果打开的选项卡很多,它运行起来会很慢。

如果您愿意接受权衡,这里还有另一个书签,它可以完成您所要求的部分功能:

javascript:(function(){function%20toggleImages(root){var%20stylesheet,stylesheetId='bookmarklet-hide-image-stylesheet',rules='*%20{%20background-image:%20none%20!important;%20}%20img,%20input[type=image],%20object[type^=image]%20{%20visibility:%20hidden%20!important;%20}',tagNames=['frame','iframe'],elements,i,j;stylesheet=root.getElementById(stylesheetId);if(stylesheet){stylesheet.parentNode.removeChild(stylesheet);}else{stylesheet=root.createElement('style');stylesheet.type='text/css';stylesheet.id=stylesheetId;if(stylesheet.styleSheet){stylesheet.styleSheet.cssText=rules;}else{stylesheet.appendChild(root.createTextNode(rules));}root.getElementsByTagName('head')[0].appendChild(stylesheet);}for(i=0;i<tagNames.length;i+=1){for(j=0,elements=root.getElementsByTagName(tagNames[i]);j<elements.length;j+=1){toggleImages(elements[j].contentDocument);}}}toggleImages(document);}());

它会尝试使用 隐藏和取消隐藏背景图像、<img>标签和<input>以及<object>标签type="image",但仍有许多更奇怪的图像传送方法它无法识别,例如带有标签的<embed>或。由于浏览器安全措施(通常在 中有广告时会很明显),它无法跨域工作,并且它可能会被用户样式表覆盖,或者如果页面使用 ,它会被破坏。<object><param><iframes>!important

感兴趣的读者可以阅读源代码:

(function () {
    function toggleImages(root) {
        var stylesheet,
            stylesheetId = 'bookmarklet-hide-image-stylesheet',
            rules = '* { background-image: none !important; } img, input[type=image], object[type^=image] { visibility: hidden !important; }',
            tagNames = ['frame', 'iframe'],
            elements,
            i,
            j;

        stylesheet = root.getElementById(stylesheetId);
        if (stylesheet) {
            stylesheet.parentNode.removeChild(stylesheet);
        } else {
            stylesheet = root.createElement('style');
            stylesheet.type = 'text/css';
            stylesheet.id = stylesheetId;
            if (stylesheet.styleSheet) {
                stylesheet.styleSheet.cssText = rules;
            } else {
                stylesheet.appendChild(root.createTextNode(rules));
            }
            root.getElementsByTagName('head')[0].appendChild(stylesheet);
        }

        for (i = 0; i < tagNames.length; i += 1) {
            for (j = 0, elements = root.getElementsByTagName(tagNames[i]); j < elements.length; j += 1) {
                toggleImages(elements[j].contentDocument);
            }
        }
    }

    toggleImages(document);
}());

答案2

您不需要 javascript。OP 想要一种无需重新加载页面即可切换图像的简单方法,如下所示:

使用 Firefox/Chrome/等的“Stylish”扩展程序,然后使用我在下面添加的代码。它适用于所有网站,并将隐藏所有图片、视频(嵌入)和背景图片。

@namespace url(http://www.w3.org/1999/xhtml);
/*Hide Images*/
IMG { display: none !important }
/*Hide Videos*/
iframe { display:none !important }
/*Hide Background*/
body {background:none !important }
a {background:none !important }
div {background-image:none !important }
div {background:none !important }

答案3

我可以告诉你如何一键删除页面上的所有图片,而无需重新加载页面。只需将以下代码行保存为 Firefox 书签工具栏上的书签,并将其命名为“zap images”。

javascript:(function(){function%20toArray%20(c){var%20a,%20k;a=new%20Array;for%20(k=0;%20k%20<%20c.length;%20++k)a[k]=c[k];return%20a;}var%20images,%20img,%20altText;images=toArray(document.images);for%20(var%20i=0;%20i%20<%20images.length;%20++i){img=images[i];altText=document.createTextNode(img.alt);img.parentNode.replaceChild(altText,%20img)}})();

现在,打开一个包含图片的网页,并点击此书签。您刚刚删除了图片。但是,为了恢复它们,您需要刷新页面。

相关内容