عند فتح صفحة الويب، فإنه يطالب Stack overflow عند السطر: 0. لقد قمت بعمل لقطة شاشة على النحو التالي:
بعد التحليل، وجد أن هناك تعليمات برمجية مشابهة لما يلي في صفحة الويب:
<img src="pic.gif" onerror="javascript:this.src='/noPic.gif';"
التحليل: انتبه بشكل خاص إلى onerror عندما لا تكون الصورة موجودة، سيتم تشغيل onerror، ويحدد onerror صورة NoPic.gif لـ img. وهذا يعني أنه إذا كانت الصورة موجودة، فسيتم عرض pic.gif، وإذا كانت الصورة غير موجودة، فسيتم عرض noPic.gif. ولكن هنا تأتي المشكلة. إذا لم يكن noPic.gif موجودًا، فسيستمر تشغيل onerror، مما يتسبب في حدوث حلقة، وبالتالي يحدث خطأ.
ملاحظة: إذا كانت الصورة موجودة ولكن الشبكة ليست سلسة، فقد يتم تشغيل onerror أيضًا.
الحل: أولاً: إزالة رمز onerror أو تغيير رمز onerror إلى شيء آخر أو التأكد من أن الصورة الموجودة في onerror صغيرة بما يكفي وموجودة.
النوع الثاني:
<نوع البرنامج النصي = "نص/جافا سكريبت">
<!--
وظيفة nofind(){
var img=event.srcElement;
img.src="../../../sys/common/image/fileoperation/icon/default.gif";
img.onerror=null; التحكم في عدم الاستمرار في الضرب
}
// عند عدم العثور عليه، استخدم الأحداث للحصول على واحد تلو الآخر
//-->
</script>
<td align="center"><img src="../../../sys/common/image/fileoperation/icon/${file.suffix }.gif" onerror="nofind();" / >${file.name}</td>
النوع الثالث :
استخدم اثنين <img />
<نمط النوع = "نص/CSS">
مختفي {
العرض: لا شيء؛
}
</نمط>
<img src="xxx.jpg" onerror="this.class='hidden';xx.class=''" />
<img src="xxx.jpg" />