Reputation: 991
I would like to set an image as nothing. By doing src=""
many people say it can cause problems to browsers:
http://www.nczonline.net/blog/2009/11/30/empty-image-src-can-destroy-your-site/
so I am not sure if below can face to the same problem as setting src to empty:
<img id="myImage">
since there's no src attribute on this case.
So If I want to initially set an image to nothing, what's the best I can do?
Upvotes: 29
Views: 84314
Reputation: 54
The broken image goes away with Chrome when there is no src attribute inside the element.
<html>
<title></title>
<body>
// broken image
<img id='image_id' src="">
// does not show a broken image
<img id='image_id'>
</body>
</html>
My solution is to use the the removeAttribute to get ride of the broken image.
<script>
var img_obj = document.getElementById('image_id);
img_obj.removeAttribute('src');
</script>
Upvotes: 0
Reputation: 9812
Using a 1px transparent encoded image is an accepted solution (recommended by CSSTricks)
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="">
PS: Don't be confused later when DevTools shows these as network requests of zero bytes, that's just how DevTools works, all imgs are listed as network requests.
DS: alt=""
is included because otherwise, screenreaders will read the src
out loud
Upvotes: 24
Reputation: 3
Use this script to set a default image if src is empty or blank
$(document).ready(function () {
$('img').each(function () {
if($(this).attr('src')=="") {
$(this).attr('src', 'Images/download.jpg');
}
});
});
Upvotes: 0
Reputation: 21180
Initialise the image as follows: src="//:0"
like here: <img id="myImage" src="//:0">
Edit: as per the comment of Alex below, using
//:0
apparently can trigger theonError
event of theimg
. So beware of this.Edit 2: From comment by Drkawashima: As of Chrome 61
src="//:0"
no longer seems to trigger the onError event.
Other solution
Alternatively, you can use a very small image until you actually fill the src
tag: like this image. With this 'very small image', you would then initialise the tag like so:
<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" width="0" height="0" alt="" />
Remove element from DOM
Alternatively, if you simply don't want the element to appear in the DOM, just use some JavaScript:
var myObject = document.getElementById('myObject');
myObject.parentNode.removeChild(myObject);
(as per this answer, using JavaScript's .remove()
function is not recommended, due to poor browser support in DOM 4)
Or just use some jQuery:
$("#myObject").remove();
Upvotes: 41
Reputation: 403
Just use a hash symbol #
. It's valid value for src
attribute. :)
https://stackoverflow.com/a/28077004/3841049
Upvotes: 0