src 소스 이미지를 찾을 수 없을 때“이미지를 찾을 수 없음”아이콘을 자동으로 숨기는 방법
이미지 파일을 찾을 수 없을 때 렌더링 된 HTML 페이지에서 클래식 "이미지를 찾을 수 없음" 아이콘 을 숨기는 방법을 알고 있습니까?
JavaScript / jQuery / CSS를 사용하는 작업 방법이 있습니까?
onerror
JavaScript 의 이벤트를 사용하여 이미지로드에 실패 할 때 작동 할 수 있습니다 .
var img = document.getElementById("myImg");
img.onerror = function () {
this.style.display = "none";
}
질문 이후 jQuery에서 :
$("#myImg").error(function () {
$(this).hide();
});
또는 모든 이미지 :
$("img").error(function () {
$(this).hide();
// or $(this).css({visibility:"hidden"});
});
당신은 사용해야하는 visibility: hidden
대신 .hide()
이미지를 숨기는 것은 레이아웃을 변경할 수있는 경우. 웹의 많은 사이트는 기본 "이미지 없음"이미지를 대신 사용 src
하여 지정된 이미지 위치를 사용할 수 없을 때 해당 이미지에 속성을 지정합니다.
<img onerror='this.style.display = "none"'>
Andy E 의 대답 에 대한 빠른 조사를 수행하면 live()
바인딩 할 수 없습니다 error
.
// won't work (chrome 5)
$('img').live('error', function(){
$(this).css('visibility', 'hidden');
});
그래서 당신은 같이 가야합니다
$('<img/>', {
src: 'http://www.notarget.com/fake.jpg',
error: function(e){
$(this).css('visibility', 'hidden');
}
}).appendTo(document.body);
error event handler
새 요소를 만들 때 직접 바인딩합니다 .
대답하기에는 조금 늦었지만 여기에 내 시도가 있습니다. 같은 문제에 직면했을 때 이미지 크기의 div를 사용하고 배경 이미지를이 div로 설정하여 문제를 해결했습니다. 이미지를 찾을 수없는 경우 div는 투명하게 렌더링되므로 모든 작업이 자바 스크립트 코드없이 자동으로 수행됩니다.
모든 이미지 오류를 숨기려면 페이지 하단 (닫는 body 태그 바로 앞)에 다음 자바 스크립트를 추가하세요.
(function() {
var allimgs = document.images;
for (var i = 0; i < allimgs.length; i++) {
allimgs[i].onerror = function() {
this.style.visibility = "hidden"; // Other elements aren't affected.
}
}
})();
Gary Willoughby가 제안한 솔루션을 약간 수정했습니다. 깨진 이미지를 간략하게 보여주기 때문입니다. 내 솔루션 :
<img src="..." style="display: none" onload="this.style.display=''">
내 솔루션에서 이미지는 처음에 숨겨져 있으며 성공적으로로드 된 경우에만 표시됩니다. 단점이 있습니다. 사용자는 하프로드 된 이미지를 볼 수 없습니다. 사용자가 JS를 비활성화하면 이미지를 볼 수 없습니다.
ng-src
Angular.js 등에서 지시문을 사용할 때 여전히 작동하면서 정확하게 이것을 수행하는 멋진 방법을 찾았습니다 .
<img
ng-src="{{myCtrl.myImageUrlThatWillDynamicallyChange}}"
onerror="this.src='data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='"
/>
기본적으로 가장 짧은 투명 GIF입니다 ( http://proger.i-forge.net/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82% 참조) D0 % B5 % D1 % 80 / [20121112] % 20The % 20smallest % 20transparent % 20pixel.html )
물론이 gif는 일부 전역 변수 안에 보관할 수 있으므로 템플릿을 엉망으로 만들지 않습니다.
<script>
window.fallbackGif = "..."
</script>
그리고 사용
<img
ng-src="{{myCtrl.myImageUrlThatWillDynamicallyChange}}"
onerror="this.src=fallbackGif"
/>
기타
단순한 CSS 사용
.AdminImageHolder {
display: inline-block;
min-width: 100px;
max-width: 100px;
min-height: 100px;
max-height: 100px;
background: url(img/100x100.png) no-repeat;
border: 1px solid #ccc;
}
'code' 카테고리의 다른 글
Python 확장-super () Python 3 대 Python 2 사용 (0) | 2020.09.13 |
---|---|
C # : 여러 줄 문자열을 통해 반복 (0) | 2020.09.13 |
jquery, 쿠키 삭제 (0) | 2020.09.13 |
RecyclerView의 ListView.setEmptyView와 동일 (0) | 2020.09.13 |
널 병합 연산자에 "반대"가 있습니까? (0) | 2020.09.12 |