เมื่อเปิดหน้าเว็บ จะแจ้ง 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 มีขนาดเล็กเพียงพอและมีอยู่
ประเภทที่สอง:
<script type="text/javascript">
-
ฟังก์ชั่น nofind(){
var img=event.srcElement;
img.src="../../../sys/common/image/fileoperation/icon/default.gif";
img.onerror=null; ควบคุมไม่ให้ตีต่อไป
-
//เมื่อไม่พบ ให้ใช้กิจกรรมเพื่อรับทีละรายการ
-
</สคริปต์>
<td align="center"><img src="../../../sys/common/image/fileoperation/icon/${file.suffix }.gif" onerror="nofind(); /" >${file.name}</td>
ประเภทที่สาม:
ใช้สอง <img />
<style type="text/css">
ที่ซ่อนอยู่ {
จอแสดงผล: ไม่มี;
-
</สไตล์>
<img src="xxx.jpg" onerror="this.class='hidden';xx.class=''" />
<img src="xxx.jpg" />