เมื่อ IE ไม่สามารถรับ Event ใน Element เปล่าๆได้
เคยบ้างมั้ยครับที่สร้าง Element เปล่าๆ ไม่มีอะไรอยู่ข้างใน แต่มันมีปัญหากับ IE อีตรงที่มันไม่สามารถรับอีเวนต์ของเมาส์ได้ (ไม่สามารถรับ Event mousemove ได้ หรือ ไม่สามารถเปลี่ยน Cursor ได้ เมื่อเมาส์เข้าไปใน Element เปล่าๆ นั้น)
โค้ดด้านบนนี้จะทำงานได้ตามความต้องการบน Browser อื่นๆ (เปลี่ยนเมาส์เป็นรูปมือ) แต่บน IE จะไม่แสดงผลการเปลี่ยนแปลงใดๆเลย การแก้ไขก็ทำได้ง่ายๆครับด้วยการวาดสีพื้นหลังให้เต็ม Element แต่เนื่องจากเราต้องการไม่ให้มองเห็น Element ที่ซ้อนอยู่ ทำให้เราต้องใส่สีพื้นหลังเป็นแบบโปร่งใสครับ
อย่าลืมใช้บราวเซอร์อื่นๆเพื่อเปิดดูหน้านี้นะครับ เพื่อเปรียบเทียบการทำงานนะครับ
<div id="test1">
เหนือข้อความนี้มี Element เปล่าๆซ้อนอยู่ ลองเลื่อนเมาส์ไปมาบน Element นี้
<span></span>
</div>
<style>
#test1 {
position: relative;
height: 20px;
width: 80%;
}
#test1 span {
position: absolute;
top; 0;
left: 0;
height: 20px;
width: 100%;
cursor:pointer;
}
เหนือข้อความนี้มี Element เปล่าๆซ้อนอยู่ ลองเลื่อนเมาส์ไปมาบน Element นี้
โค้ดด้านบนนี้จะทำงานได้ตามความต้องการบน Browser อื่นๆ (เปลี่ยนเมาส์เป็นรูปมือ) แต่บน IE จะไม่แสดงผลการเปลี่ยนแปลงใดๆเลย การแก้ไขก็ทำได้ง่ายๆครับด้วยการวาดสีพื้นหลังให้เต็ม Element แต่เนื่องจากเราต้องการไม่ให้มองเห็น Element ที่ซ้อนอยู่ ทำให้เราต้องใส่สีพื้นหลังเป็นแบบโปร่งใสครับ
<div id="test1">
เหนือข้อความนี้มี Element เปล่าๆซ้อนอยู่ ลองเลื่อนเมาส์ไปมาบน Element นี้
<span></span>
</div>
<style>
#test1 {
position: relative;
height: 20px;
width: 80%;
}
#test1 span {
position: absolute;
top; 0;
left: 0;
height: 20px;
width: 100%;
cursor:pointer;
background-color: #000000; /* IE7 IE8, CSS2 */
filter: alpha(opacity=0); /* IE7 IE8 CSS2 */
background-color: rgba(0,0,0,0); /* IE9 CSS3 */
}
เหนือข้อความนี้มี Element เปล่าๆซ้อนอยู่ ลองเลื่อนเมาส์ไปมาบน Element นี้
อย่าลืมใช้บราวเซอร์อื่นๆเพื่อเปิดดูหน้านี้นะครับ เพื่อเปรียบเทียบการทำงานนะครับ