আপনি কী জানেন কীভাবে কোনও চিত্র ফাইল পাওয়া যায় না যখন একটি রেন্ডার এইচটিএমএল পৃষ্ঠা থেকে ক্লাসিক "চিত্র পাওয়া যায় না" আইকনটি কীভাবে আড়াল করবেন ?
জাভাস্ক্রিপ্ট / jQuery / CSS ব্যবহার করে কোন কার্য পদ্ধতি?
আপনি কী জানেন কীভাবে কোনও চিত্র ফাইল পাওয়া যায় না যখন একটি রেন্ডার এইচটিএমএল পৃষ্ঠা থেকে ক্লাসিক "চিত্র পাওয়া যায় না" আইকনটি কীভাবে আড়াল করবেন ?
জাভাস্ক্রিপ্ট / jQuery / 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=''">
আমার সমাধানে চিত্রটি প্রাথমিকভাবে লুকানো থাকে এবং এটি সফলভাবে লোড করা হয় তবেই প্রদর্শিত হয়। এটির একটি অসুবিধা রয়েছে: ব্যবহারকারীরা অর্ধলোড হওয়া চিত্র দেখতে পাবেন না। এবং যদি ব্যবহারকারী জেএস অক্ষম করে থাকে তবে তারা কখনই কোনও চিত্র দেখতে পাবে না
প্রতিটি চিত্রের ত্রুটিটি আড়াল করার জন্য, কেবল আপনার পৃষ্ঠার নীচে এই জাভাস্ক্রিপ্ট যুক্ত করুন (বডি ট্যাগের ঠিক আগে):
(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.
}
}
})();
উত্তর দিতে দেরি হতে পারে তবে আমার চেষ্টা এখানে। আমি যখন একই সমস্যার মুখোমুখি হয়েছিলাম তখন আমি চিত্রের আকারের একটি ডিভ ব্যবহার করে এবং এই ডিভটিতে ব্যাকগ্রাউন্ড-চিত্রটি সেট করে এটি ঠিক করেছি। যদি চিত্রটি খুঁজে পাওয়া যায় না, তবে ডিভটি স্বচ্ছ রেন্ডার করা হয়েছে, সুতরাং এটি সমস্ত জাভা-স্ক্রিপ্ট কোড ছাড়াই নিঃশব্দে সম্পন্ন হয়েছে।
অ্যান্ডি ই এর উত্তর সম্পর্কে একটি দ্রুত গবেষণা করছেন , এটি 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-srcAngular.js এ নির্দেশনা ব্যবহার করার সময় কার্যকর হয় এবং ...
<img
ng-src="{{myCtrl.myImageUrlThatWillDynamicallyChange}}"
onerror="this.src='data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='"
/>
এটি মূলত একটি স্বল্পতম স্বচ্ছ জিআইএফ (যেমনটি দেখা গেছে 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% 20 ক্ষুদ্রতম% 20% ট্রান্সপোর্টেন্ট% 20 পিক্সেল এইচটিএমএল )
অবশ্যই এই জিআইএফ কিছু বৈশ্বিক পরিবর্তনশীল এর ভিতরে রাখা যেতে পারে যাতে এটি টেমপ্লেটগুলিকে বিশৃঙ্খলা না করে।
<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;
}