๋ชฉ์ฐจ
img ํ๊ทธ 404 Error๊ฐ ๋ฐ์ํ๋ฉด ๋์ฒด ์ด๋ฏธ์ง๋ฅผ ๋์ฐ๋ ๊ฒ์ ์ฝ๋ค.
์๋ ์ฒ์๋ถํฐ ๊ทธ๋ ๊ฒ ๋ง๋ค๋ฉด ๋ณ๋ก ๊ฑฑ์ ํ ๋ฌธ์ ๋ ์๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ฒด๋ก ๋ ์ด์์์ ๊ตฌ์ฑํ๋ ์ด๋ฏธ์ง๋ bg์์ฑ์ ์ค ์คํ์ผ์ ๋จน์ด๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๋ฏ๋ก, bg๊ฐ ๊น๋ฆฌ์ง ์์ผ๋ฉด ์คํ์ผ๋ง ๋ณ๊ฒฝํด ์ฃผ๋ฉด ๋๋ค.
๊ทธ ์ด์ธ์ ๋ ์ด์์์ ๊ตฌ์ฑํ๋ ์ด๋ฏธ์ง ์์๋ค๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฒ๋ฆฌํ๋ฉด ๋๋ค.
๋ฌธ์ ๋ ๊ฒ์ํ์ด๋, ๊ฐค๋ฌ๋ฆฌ ๋ฑ ๋ค์ ์ฌ์ฉ์ ๋น๋ฐ ๊ทธ๋ฃน์ด ์กด์ฌํ์ง ์๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฆฌ๊ฑฐ๋, ์ฌ๋ ธ๋ ์ด๋ฏธ์ง ์์ค ์ฃผ์๊ฐ ์์ด์ง ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ ์ด๋ฏธ์ง ์๋ฌ ๋ฌธ์ ๋ ๋ณดํต ๋ค์๊ณผ ๊ฐ์ด ํด๊ฒฐํด ์ฃผ์ด์ผ ํ๋ค.
<img id="ํ๊ทธ_์์ด๋" scr="์ด๋ฏธ์ง_์ฃผ์" onError="this.src='๋์ฒด_์ด๋ฏธ์ง_์ฃผ์';">
๊ทธ๋ฐ๋ฐ ์์๋ ์ง์ ํ์ง๋ง ๊ฒ์ํ์ ์ด๋ฏธ์ง๋ฅผ ๋ถํํด๋ค ๋ถ์ด๋ ์ฌ์ฉ์๋ค์ด ์น์ ํ๊ฒ htmlํ๊ทธ๋ฅผ ์ด์ด์ ๋์ฒด ์ด๋ฏธ์ง ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ attr์ ์ง์ด๋ฃ๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ๊ฒ์ ๋ฌด๋ฆฌ๋ค.
๋ฐ๋ผ์ globalํ ์ ์ด์ฟผ๋ฆฌ๊ฐ imgํ๊ทธ๋ฅผ ํ ๋ฒ ๋๋ฉด์ ์๋ฌ๊ฐ ์์ผ๋ฉด ๋์ฒด ์ด๋ฏธ์ง๋ก ๋ณ๊ฒฝํด ์ฃผ๊ฑฐ๋ ์ด๋ฏธ์ง๋ฅผ ์์ ๋ ์์ ์ ํด ์ฃผ๋ ๊ฒ์ด ์ข ๋ ์น์ ํ ๋ฐฉ๋ฒ์ด ๋ ๊ฒ์ด๋ค.
$(document).ready(function () {
// no image
$("img").each(function (i, ele) {
var uri = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";
//์ด๋ฏธ load๋ ์ด๋ฏธ์ง๋ค์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ฝ๋
if (ele.src != '' && ele.complete == true && ele.naturalWidth == 0) {
$(this).attr("src", uri);
$(this).attr("width", "1px");
}
//load๋์ง ์์ ์ด๋ฏธ์ง๋ค์ error ์ด๋ฒคํธ๋ฅผ ์ถ๊ฐํด์ค๋ค
$(this).on('error', function () {
$(this).attr("src", uri);
$(this).attr("width", "1px");
});
});
});
์ด ์ฝ๋๊ฐ ๊ทธ๋๋ง ๊ฐ์ฅ ์งง์ ์ฝ๋๋ค.
์ ์ด์ฟผ๋ฆฌ each๋ฅผ ๋๋ ค์ ์ด๋ฏธ ๋ก๋๋ ์ด๋ฏธ์ง๋ฅผ ์ฐพ์์ ์๋ฌ๊ฐ ๋ฐ์ํ ์ง๋ฅผ ํ๋ณํ๋ ๊ฒ์ ์กฐ๊ฑด๋ฌธ์ ์ฃผ์ด์ง ์กฐ๊ฑด๋ค์ด๋ค.
์๋ฌ๊ฐ ๊ฐ์ง๋ ์ด๋ฏธ์ง์ data:image/gif;base64๋ก ์์ฑ๋ ์ด๋ฏธ์ง ์์ค๋ฅผ ์ฃผ์์ง๋ง, ๊ผญ ์ ๊ฒ ์๋์ด๋ ์จ๋ผ์ธ ์์ ์กด์ฌํ๋ ๋์ฒด ์ด๋ฏธ์ง ์ฃผ์๋ฅผ ๋ถ์ฌํด๋ ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก "width", "1px"๋ ์ทจํฅ ๋ฌธ์ ๋ค.
์คํ์ผ์ ์ ์ ํ ์ฃผ๊ฑฐ๋, ๋์ฒด ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ก ์ง์ ํด ์ฃผ์ด๋ ๋๋ค.
๋๊ธ