ผู้ฟังเหตุการณ์ SVG: วิธีเพิ่มและทำไมคุณอาจต้องทำ

เผยแพร่แล้ว: 2022-12-25

หากคุณกำลังพยายามเพิ่มตัวฟังเหตุการณ์ไปยัง SVG คุณอาจพบปัญหาเล็กน้อย แม้ว่า SVG จะใช้ XML แต่ก็ไม่รองรับวิธี DOM มาตรฐานสำหรับการเพิ่มตัวรับ เหตุการณ์ นอกจากนี้ เบราว์เซอร์บางตัวอาจไม่รู้จักเหตุการณ์ SVG มีสองสามวิธีในการทำเช่นนี้ คุณสามารถใช้ไลบรารีเช่น jQuery เพื่อเพิ่มตัวรับฟังเหตุการณ์ หรือคุณสามารถเพิ่มโดยตรงไปยังองค์ประกอบ SVG ด้วย JavaScript เพียงเล็กน้อย

เราสามารถแนบตัวจัดการเหตุการณ์กับ Svg ได้หรือไม่

เราสามารถแนบตัวจัดการเหตุการณ์กับ Svg ได้หรือไม่
เครดิตรูปภาพ: mql5.com

SVG รองรับการจัดการเหตุการณ์หรือไม่ SVG DOM มีฐาน XML ซึ่งหมายความว่าทุกองค์ประกอบพร้อมใช้งาน ตัวจัดการเหตุการณ์ JavaScript สามารถแนบกับองค์ประกอบได้หากจำเป็น

ในบทช่วยสอนนี้ เราจะกล่าวถึงวิธีจัดการกับเหตุการณ์โดยใช้ SVG และ ECMAScript เหตุการณ์ใช้เพื่อสร้างสคริปต์ที่จะตอบสนองต่อการป้อนข้อมูลของผู้ใช้ เหตุการณ์ของระบบหรือผู้ใช้ถูกติดตามอย่างต่อเนื่องตลอดเวลาโดยแอปพลิเคชันลูปเหตุการณ์ มีแอปพลิเคชันจำนวนมากที่สามารถทำงานบนระบบปฏิบัติการได้ เช่น ส่วนติดต่อผู้ใช้แบบกราฟิก ดีมอน และโปรแกรมต่างๆ เมื่อทริกเกอร์เหตุการณ์ถูกทริกเกอร์โดยอ็อบเจกต์เหตุการณ์ มันจะเชื่อมต่อกับ ตัวจัดการเหตุการณ์ (ฟังก์ชัน javscript) เหตุการณ์ยังสามารถเกี่ยวข้องกับผู้ฟังจำนวนมาก เหตุการณ์เคลื่อนผ่านจากลำดับชั้นที่ซ้อนกันไปยังองค์ประกอบเอกสาร ซึ่งเป็นที่ตั้งขององค์ประกอบบรรพบุรุษที่สนใจ

ต่อไปนี้เป็นรายการคุณสมบัติและวิธีการพื้นฐานของเหตุการณ์ คุณสมบัติและวิธีการของเหตุการณ์ Mouse สืบทอดมาจากเหตุการณ์ UI คุณสมบัติบางอย่างทำงานแตกต่างกันในเบราว์เซอร์และ vas (หรือ vas-as) ที่แตกต่างกัน UA บางตัวไม่แสดงคุณสมบัติ the.timeStamp สำหรับ MouseEvent ทุกประเภท แต่สำหรับบางประเภทเท่านั้น (เช่น คลิก) ในขณะที่บางคนรายงานว่าใช้ปุ่มกลางหรือปุ่มขวาของเมาส์ แต่ไม่ได้ใช้เมนูบริบท แต่บางคนก็ทำ คุณสมบัติ Thedetail ไม่ได้ใช้เสมอใน UAs ทั้งหมด อ็อบเจ็กต์ mapApp นอกจากจะซ่อนความซับซ้อนในการจัดการโปรแกรมดูต่างๆ จากผู้ พัฒนาเนื้อหา SVG แล้ว ยังปกปิดมันอีกด้วย

เหตุการณ์การกลายพันธุ์ไม่ได้รับการจัดการใน ASV3 แต่สามารถใช้เมธอด mapApp.getScreenCTM ได้ เนื่องจากคุณสมบัติและวิธีการบางอย่างสำหรับเหตุการณ์การกลายพันธุ์นั้นสืบทอดมาจากเหตุการณ์ทั่วไป เหตุการณ์เหล่านี้จึงเป็นแบบจำลองที่ยอดเยี่ยมสำหรับเหตุการณ์การกลายพันธุ์ เหตุการณ์ SVGResize สามารถสังเกตได้ในหน้าต่างแยกต่างหากที่เปิดขึ้นโดยมีตัวอย่างที่ 5 อยู่ในนั้นและขยายใหญ่ขึ้น เหตุการณ์นี้มีประโยชน์หากคุณต้องการให้องค์ประกอบต่างๆ ป้องกันการซูมและการแพนกล้อง ในการชดเชยการเลื่อน เราสามารถตรวจจับ การผกผัน และการชดเชยด้วยระบบพิกัด viewBox เมื่อตั้งค่า Listener เหตุการณ์ เราจะระบุเนื้อหาของข้อความแสดงสถานะที่จะพิมพ์ว่าใช้งานอยู่ เพื่อให้ผู้ใช้สามารถป้อนกล่องข้อความได้ วิธีการนี้เป็นชื่อที่เราตั้งให้

เนื่องจากบรรพบุรุษของเหตุการณ์นี้ได้รับการปกป้องโดย SVG UA เราจึงต้องหยุดเผยแพร่วัตถุ evt ของเรา หากเราลบวิธีนี้ เหตุการณ์จะมาถึงองค์ประกอบรูท thesvg ซึ่งตอนนี้เป็นฟังเหตุการณ์การคลิกที่กำหนดใหม่ ยกเลิกการพิมพ์ทันที ฟังก์ชัน stopTyping() จะนำตัวฟังเหตุการณ์ชั่วคราวออก ปิดข้อความแสดงสถานะ และตั้งค่าตัวแปรประเภท typeInitialized เป็นเท็จ ในการพิจารณาว่าเราต้องใช้รหัสอักขระใดสำหรับ Backspace และป้อนคีย์ เราทำการทดสอบสองครั้งในกล่องข้อความพื้นฐานนี้: 8 สำหรับคีย์ Backspace (ในกรณีนี้ เราจะลบอักขระตัวสุดท้ายออก) หรือ 10 หรือ 13 ซึ่งจะหยุดการส่งต่อไปยังเบราว์เซอร์ หลังจากเสร็จสิ้นในเมธอด evt.preventDefault() จำเป็นอย่างยิ่งที่ผู้ใช้จะไม่ใช้ทางลัดของเบราว์เซอร์เพื่อพิมพ์ตัวอักษร

คุณสามารถเพิ่มฟังเหตุการณ์ในรูปภาพได้หรือไม่

คุณสามารถเพิ่มฟังเหตุการณ์ในรูปภาพได้หรือไม่
เครดิตรูปภาพ: imgur.com

ได้ คุณสามารถเพิ่มตัวฟังเหตุการณ์ให้กับรูปภาพได้ คุณสามารถเพิ่มตัวฟังเหตุการณ์ให้กับองค์ประกอบใดก็ได้บนเพจ

ผู้ฟังฟังเหตุการณ์ในกรณีนี้เนื่องจากมีการเปลี่ยนแปลงในภาพ เมธอด DataChanged() ใช้เพื่ออัปเดตค่าผลรวมของหน้าต่างผลลัพธ์หลังจากดำเนินการแล้ว เมื่อคุณปิดภาพสด วัตถุฟังจะไม่อยู่ในขอบเขต และฟังก์ชัน destructor จะถูกเรียกใช้ โดยประกาศว่าภาพนั้นถูกปิดแล้ว สคริปต์ไม่จำเป็นต้องฟังการเปลี่ยนแปลงมากกว่าสี่ครั้งก่อนที่จะลบฟัง DataChanged เป็นเหตุการณ์ที่กำหนดไว้ล่วงหน้าในภาษาสคริปต์ DM เมื่อมีการเพิ่มรูปภาพใหม่ไปยังตัวนับ รูปภาพนั้นจะเพิ่มขึ้น ผู้ฟังจะถูกลบออกจากภาพหลังจากมีการเปลี่ยนแปลงสี่ครั้ง ตัวทำลายจะตอบสนองเมื่อตรวจพบการเปลี่ยนแปลงสี่อย่างหรือภาพถูกปิด

ฉันสามารถเพิ่ม Listener เหตุการณ์ในแท็กได้หรือไม่

ฉันจะรวมเหตุการณ์ผู้ฟังในแท็กได้อย่างไร เมธอด เช่น addEventListener() ช่วยให้คุณสามารถเพิ่มตัวฟังเหตุการณ์ไปยังวัตถุ HTML DOM ใดๆ เช่น องค์ประกอบ HTML, เอกสาร HTML, วัตถุหน้าต่าง หรือวัตถุอื่นๆ ที่สนับสนุนเหตุการณ์ เช่น วัตถุ xmlHttpRequest

เหตุการณ์สามารถเป็นฟังบนวัตถุ HTML DOM เช่นองค์ประกอบ HTML, เอกสาร HTML, วัตถุหน้าต่างหรือวัตถุที่สนับสนุนเหตุการณ์เช่นวัตถุ xmlHttpRequest เมธอด addEventListener() ช่วยให้คุณเพิ่มตัวฟังเหตุการณ์ในวัตถุ HTML DOM ใดก็ได้ เราจะสาธิตวิธีการใช้ภาษาคอมพิวเตอร์เพื่อแก้ปัญหา Add Event Listener To All A Tags เมธอด addEventListener ช่วยให้คุณเพิ่มหลายเหตุการณ์ในองค์ประกอบเฉพาะ คุณสามารถเพิ่มหนึ่งเหตุการณ์ในองค์ประกอบด้วย onclick คุณสามารถเลือกองค์ประกอบ DOM ได้หลายรายการโดยใช้ตัวเลือก CSS ใน JavaScript ไม่จำเป็นต้องยิงสายฟ้า มันถูกจัดการโดยแต่ละองค์ประกอบของระบบ

#myclass: วิธีใหม่ในการโต้ตอบกับหน้าเว็บของคุณ

var obj เป็นเอกสาร SelectorAll (#myClass) ใช้เพื่อเลือกคลาส (var i = 0; i .length; i++) obj(i) _ _ _ _ _ _ _ เพิ่มตัว ฟังเหตุการณ์ใหม่ ('คลิก', ฟังก์ชัน ()', ดำเนินการบางอย่าง /);

เหตุการณ์ตัวชี้ Svg

แอตทริบิวต์ -events ตัวชี้ SVG ระบุว่าองค์ประกอบสามารถเป็นเป้าหมายของเหตุการณ์ตัวชี้ได้หรือไม่

เป็นคุณสมบัติ CSS ที่แยกจากแอตทริบิวต์ขององค์ประกอบตามค่าของมัน ซึ่งก็คือ คุณสมบัติตัวชี้เหตุการณ์ ด้วยเครื่องมือนี้ เราสามารถระบุได้ว่าส่วนใดของเอกสารหรือองค์ประกอบ sva ที่สามารถรับเหตุการณ์จากอุปกรณ์ต่างๆ เช่น เมาส์ แทร็กแพด หรือนิ้ว เหตุการณ์พอยน์เตอร์ นอกจากจะเป็นคุณสมบัติที่ไม่เชื่อเรื่องพระเจ้าตามอุปกรณ์แล้ว ฟีเจอร์บนเว็บสำหรับการป้อนข้อมูลของผู้ใช้ ยังเรียกว่าแนวคิดของการป้อนข้อมูลที่ไม่เชื่อเรื่องพระเจ้าด้วยอุปกรณ์อีกด้วย เมื่อเราแทรกลิงก์หรือตัวฟังเหตุการณ์ลงในเอกสาร SVG พื้นที่โต้ตอบไม่จำเป็นต้องเป็นรูปสี่เหลี่ยมผืนผ้าเสมอไป องค์ประกอบที่ซ่อนอยู่หรือไม่แสดงสามารถทาสีโดยไม่ให้มองเห็นได้ ขึ้นอยู่กับว่าค่าแอตทริบิวต์ที่มองเห็นได้หรือคุณสมบัติ CSS ถูกซ่อนไว้หรือไม่ การทำความเข้าใจผลกระทบของค่าตัวชี้เหตุการณ์มีความสำคัญต่อการทำความเข้าใจว่าสีที่มองเห็นได้และไม่ได้ส่งผลต่อองค์ประกอบอย่างไร คุณสามารถใช้คุณสมบัติ CSS ตัวชี้เหตุการณ์เพื่อเพิ่มพื้นที่การคลิกของรูปภาพ

สำหรับ HTML ค่าที่ถูกต้องคืออัตโนมัติและไม่มีเลย หากค่าเติมเป็นศูนย์ พื้นที่จะมองเห็นได้ แต่จะไม่มีการทาสี ใน CodePen Tiffany Brown (@webinista) อธิบายพื้นที่ที่คลิกได้ของภาพ SVG การใช้องค์ประกอบ bounding-box จะช่วยลดความจำเป็นในการใช้องค์ประกอบ phantom แทนที่จะเป็นปุ่ม HTML องค์ประกอบ event.target จะถูกฝังอยู่ในเบราว์เซอร์ส่วนใหญ่ pointer-events=”none” หมายความว่าคุณไม่จำเป็นต้องส่งคำสั่ง JavaScript ไปที่หน่วยความจำ ทุกเบราว์เซอร์ที่รองรับ SVG มีตัวเลือกสำหรับการแสดงเอกสารและองค์ประกอบ SVG

Safari 12 รองรับ Css Pointer-event อย่างสมบูรณ์

เหตุการณ์พอยน์เตอร์คืออะไร? มีตัวอย่างอะไรบ้าง?
อุปกรณ์ชี้เป็นเหตุการณ์ DOM ที่เริ่มทำงานสำหรับอุปกรณ์ชี้ตำแหน่ง สามารถใช้เพื่อจัดการกับอินพุตแบบชี้ เช่น เมาส์ ปากกา สไตลัส หรือการสัมผัส (เช่น หนึ่งนิ้วขึ้นไป) โดยการสร้างโมเดลเหตุการณ์ DOM เดียว
Safari รองรับเหตุการณ์ตัวชี้หรือข้อมูลเหตุการณ์ใน Safari หรือไม่
ด้วย CSS pointer-event (สำหรับ HTML) ที่รองรับอย่างสมบูรณ์บน Safari 12 ผู้ใช้ที่เข้าชมเพจของคุณผ่าน Safari 12 จะสามารถเห็นเหตุการณ์เหล่านั้นได้
ฉันจะโต้ตอบกับ svg ได้อย่างไร
เนื่องจาก svg เป็นภาษามาร์กอัป คุณจึงสามารถใช้ไลบรารี js เช่น jQuery เพื่อโต้ตอบกับมันได้ ข้อความค้นหาของ svg สามารถให้รายการองค์ประกอบหรืออาร์เรย์ขององค์ประกอบที่เลือกโดยคลาส สามารถแนบเหตุการณ์ได้โดยใช้ตัวจัดการเหตุการณ์ เช่น การคลิก การวางเมาส์เหนือ การใส่เมาส์ และอื่นๆ