我想将图像设置为空。通过这样做
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
的onError
事件。所以要小心这个。
img
编辑2:来自Drkawashima的评论:从Chrome 61开始
似乎不再触发onError事件。
src="//:0"
其他解决方案
或者,您可以使用非常小的图像,直到实际填充
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);
(根据这个答案,不建议使用JavaScript的
.remove()
函数,因为DOM 4中的浏览器支持很差)
或者只是使用一些 jQuery:
$("#myObject").remove();
使用 1px 透明编码图像是一种可接受的解决方案(CSSTricks推荐)
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="">
PS:稍后当 DevTools 将这些显示为零字节的网络请求时,不要感到困惑,这就是 DevTools 的工作原理,所有 imgs 都列为网络请求。
DS:包含
alt=""
,否则屏幕阅读器会大声读出 src
如果 src 为空或空白,请使用此脚本设置默认图像
$(document).ready(function () {
$('img').each(function () {
if($(this).attr('src')=="") {
$(this).attr('src', 'Images/download.jpg');
}
});
});
当元素内没有 src 属性时,损坏的图像会随着 Chrome 消失。
<html>
<title></title>
<body>
// broken image
<img id='image_id' src="">
// does not show a broken image
<img id='image_id'>
</body>
</html>
我的解决方案是使用removeAttribute来消除损坏的图像。
<script>
var img_obj = document.getElementById('image_id);
img_obj.removeAttribute('src');
</script>