เพิ่มหรือลบเหตุการณ์ในเบราว์เซอร์ IE ด้วย attaineVent และ detachevent ในเบราว์เซอร์มาตรฐานอื่น ๆ จะใช้ addeventListener และ remvereventListener ต่อไปนี้สรุปการเพิ่มและการกำจัดเหตุการณ์ แค่ดูรหัส!
/*** @description เหตุการณ์ที่มีผลผูกพันเข้ากันได้กับเบราว์เซอร์* @param เป้าหมาย* วัตถุทริกเกอร์เหตุการณ์* @param type* เหตุการณ์* @param func* ฟังก์ชั่นตัวจัดการเหตุการณ์*/ฟังก์ชั่นผูก (เป้าหมาย, ประเภท, func) {ถ้า (target.addeventListener) // ie6 ถึง ie8target.attachevent ("on" + type, func);} else {target ["on" + type] = func; // ie5}}/*** @Description Event Removal เข้ากันได้กับแต่ละเบราว์เซอร์* @param เป้าหมาย* วัตถุทริกเกอร์เหตุการณ์* @param type* เหตุการณ์* @param func* ฟังก์ชั่นตัวจัดการเหตุการณ์*/ฟังก์ชั่นไม่แน่นอน (target.detachevent) {target.detachevent ("on" + type, func);} else {target ["on" + type] = null;}}อาหารเสริมอื่น ๆ เกี่ยวกับความหมายของพารามิเตอร์ที่สามของ AddEventListener
พารามิเตอร์ที่สามของ AddEventListener
ฟังก์ชั่นที่ใช้ในการเพิ่มเหตุการณ์ทริกเกอร์ใน W3C DOM เรียกว่า AddEventListener อย่างไรก็ตามฉันไม่เคยรู้ว่าจะใช้พารามิเตอร์ที่สามของฟังก์ชันนี้อย่างไร ฉันมักจะตั้งค่าไว้อย่างไม่ตั้งใจและไม่พบความแตกต่างใด ๆ ในที่สุดฉันก็เห็นคำอธิบายเมื่อฉันอ่าน PPK บน JavaScript เมื่อสองวันก่อน สำหรับไฟล์ DOM มาตรฐานที่พบมานานแล้วฉันไม่เคยค้นหาข้อมูลเกี่ยวกับพารามิเตอร์นี้
พารามิเตอร์นี้เรียกว่า usecapture ซึ่งเป็นค่าบูลีนซึ่งเป็นจริงหรือเท็จ หากถูกส่งจริงเบราว์เซอร์จะใช้วิธีการจับภาพ หากเป็นเท็จมันเป็นเดือดซึ่งจะมีผลกระทบในสถานการณ์เฉพาะเท่านั้น มักจะแนะนำให้เป็นเท็จ สถานการณ์ที่จะมีผลกระทบคือองค์ประกอบเป้าหมายมีองค์ประกอบของบรรพบุรุษและฟังก์ชั่นการติดต่อเหตุการณ์เดียวกัน ฉันคิดว่ามันจะชัดเจนกว่าที่จะเห็นภาพ
ตัวอย่างมีสองชั้นของบล็อก div
ดังที่แสดงในภาพนี้ตัวอย่างของฉันมีองค์ประกอบ Div สองชั้นและทั้งคู่ตั้งค่าการคลิก โดยทั่วไปถ้าฉันคลิกที่องค์ประกอบสีน้ำเงินด้านในจะไม่เพียง แต่กระตุ้นเหตุการณ์การคลิกขององค์ประกอบสีน้ำเงิน แต่ยังกระตุ้นเหตุการณ์การคลิกขององค์ประกอบสีแดงในเวลาเดียวกัน พารามิเตอร์ USEcapture คือการควบคุมลำดับของเหตุการณ์สองคลิกในเวลานี้ หากเป็นเท็จจะใช้เดือด มันเป็นกระบวนการจากภายในสู่ภายนอกดังนั้นเหตุการณ์การคลิกขององค์ประกอบสีน้ำเงินจะถูกดำเนินการก่อนจากนั้นเหตุการณ์คลิกขององค์ประกอบสีแดง ถ้ามันเป็นจริงก็จะถูกจับ ในทางตรงกันข้ามเดือดจะมาจากภายนอกไปด้านใน เหตุการณ์การคลิกขององค์ประกอบสีแดงจะถูกดำเนินการก่อนก่อนเหตุการณ์คลิกขององค์ประกอบสีน้ำเงินจะถูกดำเนินการ สิ่งที่แนบมาเป็นสองตัวอย่างคือการจับและ bubbleng ไฟล์สองไฟล์แตกต่างกันในพารามิเตอร์นี้เท่านั้นดังนั้นคุณจะพบว่าลำดับเหตุการณ์ที่เกิดขึ้นนั้นแตกต่างกัน
จะเกิดอะไรขึ้นถ้า usecapture ที่ใช้โดยองค์ประกอบของเลเยอร์ที่แตกต่างกันจะแตกต่างกัน? หมายความว่าจากองค์ประกอบนอกสุดมันจะมองหาเหตุการณ์ที่ตั้งไว้เป็นองค์ประกอบที่จับไปยังองค์ประกอบเป้าหมายและหลังจากถึงองค์ประกอบเป้าหมายเพื่อดำเนินการเหตุการณ์ขององค์ประกอบเป้าหมายจากนั้นมองหาเหตุการณ์ที่ตั้งเป็นฟอง