由于 1 像素图像主要用于电子邮件中以告知发件人已收到邮件,所以我想知道是否有办法通过 chrome 中的扩展程序来阻止它们(反正那里也看不到什么东西)。
此外,最好能发出图像已被阻止的警报,但这不是必要的。
Chrome 版本:14.0.835.18 dev-m(我认为这不会有什么区别,但也不会有什么坏处。)
答案1
我不确定这是否可行。首先,如果你还没有下载图片,你怎么能检查它是否只有 1 个像素呢?
一种方法可能是让服务器帮你检查,并希望试图登录你的人只检查请求来自哪个 IP。但是,如果图片是专门发送给你的,他可以检查图片是否已被下载。我看不出有什么办法可以解决这个问题。这就是为什么全部大多数邮件客户端默认阻止图像。
更新:可能可以过滤掉一些但是 1px 图像。您可以查看文档中所有标签的宽度和高度属性,并检查它们是否为 1。这不能保证有效,因为这些属性不是必需的,但如果您确实需要该功能,则值得一试。
就像是:
var images = document.getElementsByTagName('img');
for(var i = 0; i < images.length; i++) {
if(images[i].height == 1 && images[i].width == 1)
images[i].src='';
}
您可能需要对此进行一些编辑。我还没有测试过。
答案2
您可以开发一个 Chrome 扩展程序,甚至是 GreaseMonkey 脚本,在编写 DOM 之前访问它,获取所有图像(或元素)的列表,并删除高度 ==0 和宽度 == 0 的图像。
答案3
您是否考虑过以纯文本模式阅读电子邮件,或者禁用电子邮件客户端中的自动图片下载/显示功能?Hotmail 甚至提供该功能,而且它比尝试阻止所有 1x1 图像要容易得多。事实上,一个不错的客户端(包括 Hotmail)可以智能地做到这一点。也就是说,它们允许您选择显示电子邮件中作为附件包含的图形,并仅阻止需要下载的外部图形。然后,您可以选择继续下载并显示它们,或者跳过它并将该消息保留为文本模式。
需要说明的是,1x1 像素图像不是仅用作网络臭虫。它们也几乎用于任何需要纯色块的地方,因为您只需要一个像素,然后只需将其拉伸到所需的尺寸即可。这减少了文件大小和带宽使用量。