我想将一张图片设置为空。通过使用 src=""
的方法,很多人说这可能会导致浏览器出现问题:
http://www.nczonline.net/blog/2009/11/30/empty-image-src-can-destroy-your-site/
因此我不确定下面的做法是否会面临与将src设置为空时相同的问题:
<img id="myImage">
由于这种情况下没有src属性。
如果我想最初将图像设置为无内容,我该怎么做?
我想将一张图片设置为空。通过使用 src=""
的方法,很多人说这可能会导致浏览器出现问题:
http://www.nczonline.net/blog/2009/11/30/empty-image-src-can-destroy-your-site/
因此我不确定下面的做法是否会面临与将src设置为空时相同的问题:
<img id="myImage">
由于这种情况下没有src属性。
如果我想最初将图像设置为无内容,我该怎么做?
将图像初始化如下:src="//:0"
,就像这里所示:<img id="myImage" src="//:0">
编辑:根据下面Alex的评论,使用
//:0
可能会触发img
的onError
事件。请注意。编辑2:根据Drkawashima的评论:自Chrome 61开始,
src="//:0"
似乎不再触发onError事件。
其他解决方案
或者,您可以使用一个非常小的图像,直到实际填充src
标记为止:像这个图像。使用这个“非常小的图像”,您可以这样初始化标记:
<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" width="0" height="0" alt="" />
从DOM中删除元素
或者,如果您只是不希望元素出现在DOM中,请使用一些JavaScript:
var myObject = document.getElementById('myObject');
myObject.parentNode.removeChild(myObject);
(根据这个答案,由于在DOM 4中浏览器支持不好,不建议使用JavaScript的.remove()
函数)
或者只需使用一些jQuery:
$("#myObject").remove();
src="//:0"
似乎不再触发onError
事件。 - Drkawashima使用一个1像素的透明编码图片是一种可接受的解决方案(由CSSTricks推荐)
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="">
注意:后续当DevTools将这些列为0字节的网络请求时,不要感到困惑,这只是DevTools的工作方式,所有图片都被列为网络请求。
注:包含alt=""
是为了防止屏幕阅读器将src
读出来。
$(document).ready(function () {
$('img').each(function () {
if($(this).attr('src')=="") {
$(this).attr('src', 'Images/download.jpg');
}
});
});