क्या आप जानते हैं कि क्लासिक "इमेज नहीं मिली" को कैसे छिपाया जाए एक छवि फ़ाइल नहीं मिलने पर प्रदान किए गए HTML पृष्ठ से आइकन को ?
जावास्क्रिप्ट / jQuery / CSS का उपयोग करके कोई भी कार्य विधि?
क्या आप जानते हैं कि क्लासिक "इमेज नहीं मिली" को कैसे छिपाया जाए एक छवि फ़ाइल नहीं मिलने पर प्रदान किए गए HTML पृष्ठ से आइकन को ?
जावास्क्रिप्ट / jQuery / CSS का उपयोग करके कोई भी कार्य विधि?
:-moz-broken
] ( developer.mozilla.org/en/CSS/:-moz-broken ) देखें। मैं पहले खुद से सोच रहा था कि एक छद्म वर्ग टूटी हुई छवियों को स्टाइल करने के लिए उपयोगी होगा।
जवाबों:
onerror
छवि को लोड करने में विफल होने पर आप जावास्क्रिप्ट में घटना का उपयोग कर सकते हैं :
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").error(function () { /*...*/ });
।
error
" live()
या के साथ बाउंडेबल है delegate()
।
visibility
बेहतर होगा, क्योंकि display
लेआउट को तोड़ सकते हैं।
<img onerror='this.style.display = "none"'>
मैंने गैरी विलोबी द्वारा सुझाए गए समाधान को थोड़ा संशोधित किया है, क्योंकि यह टूटी हुई छवि आइकन को संक्षेप में दिखाता है। मेरा समाधान:
<img src="..." style="display: none" onload="this.style.display=''">
मेरे समाधान में छवि शुरू में छिपी हुई है और केवल तभी दिखाई जाती है जब वह सफलतापूर्वक लोड हो जाती है। इसका एक नुकसान है: उपयोगकर्ताओं को आधी भरी हुई छवियां नहीं दिखाई देंगी। और यदि उपयोगकर्ता ने JS को अक्षम कर दिया है तो वे कभी भी कोई चित्र नहीं देखेंगे
प्रत्येक छवि त्रुटि को छिपाने के लिए, बस इस जावास्क्रिप्ट को अपने पृष्ठ के निचले भाग में जोड़ें (बॉडी टैग से ठीक पहले):
(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.
}
}
})();
उत्तर देने में थोड़ी देर हो सकती है, लेकिन यहाँ मेरा प्रयास है। जब मैंने उसी मुद्दे का सामना किया, तो मैंने छवि के आकार का एक div का उपयोग करके और इस div के लिए पृष्ठभूमि-छवि सेट करके इसे ठीक किया। यदि छवि नहीं मिली है, तो div को पारदर्शी बनाया गया है, इसलिए इसके सभी चुपचाप जावा स्क्रिप्ट कोड के बिना किया जाता है।
एंडी ई के उत्तर पर एक त्वरित शोध करना , इसके 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
एक नया तत्व बनाने पर बंधन ।
error
। nice to have
मेरे लिए ऐसा लगता है।
मुझे यह करने के लिए एक निफ़्टी विधि मिल गई है, जबकि अभी भी कार्यात्मक है जब यह 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%D1%8C%D1%8E%D1%82/82% D0% B5% डी 1% 80 / [20,121,112]% 20The% 20smallest% 20transparent% 20pixel.html )
बेशक इस gif को कुछ वैश्विक वैरिएबल के अंदर रखा जा सकता है ताकि यह टेम्प्लेट को गड़बड़ न करे।
<script>
window.fallbackGif = "..."
</script>
और उपयोग करें
<img
ng-src="{{myCtrl.myImageUrlThatWillDynamicallyChange}}"
onerror="this.src=fallbackGif"
/>
आदि।
बस सरल सीएसएस का उपयोग करें
.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;
}