อินเทอร์เฟซ IFocusableTree
แสดงต้นไม้ของเอลิเมนต์ที่โฟกัสได้ซึ่งมีบริบทโฟกัสที่ใช้งานอยู่/ไม่ได้ใช้งานของตนเอง
โปรดทราบว่า FocusManager จะจัดการโฟกัส และการใช้งานต้นไม้จะโฟกัส IFocusableNode ได้สูงสุดครั้งละ 1 รายการ หากแผนภูมิเองมีโฟกัส ระบบจะถือว่าโหนดที่โฟกัสของแผนภูมิ "ทำงานอยู่" ("ไม่ได้ทำงานอยู่" หากแผนภูมิอื่นมีโฟกัส)
ระบบจะแชร์โฟกัสระหว่างต้นไม้อย่างน้อย 1 ต้น โดยที่แต่ละต้นจะมีโหนดที่ใช้งานอยู่หรือไม่ได้ใช้งานอยู่เพียง 1 โหนด (และจะมีโหนดที่ใช้งานอยู่ได้เพียง 1 โหนดในทั้งหน้าเว็บในช่วงเวลาหนึ่งๆ) แนวคิดของโหมดโฟกัสแบบพาสซีฟคือการให้บริบทแก่ผู้ใช้ว่าโฟกัสจะกลับมาอยู่ที่ใดเมื่อไปยังส่วนที่เป็นต้นไม้ซึ่งโฟกัสไว้ก่อนหน้านี้
โปรดทราบว่าหากต้องการโหนดที่โฟกัสอยู่ในปัจจุบันของต้นไม้ (แบบพาสซีฟหรือแอ็กทีฟ) คุณสามารถใช้ FocusableTreeTraverser.findFocusedNode ได้
โปรดทราบว่าหากต้องการดึงข้อมูลโหนดที่เฉพาะเจาะจงสำหรับต้นไม้นี้ ให้ใช้ lookUpFocusableNode หรือ FocusableTreeTraverser.findFocusableNodeFor
ลายเซ็น:
export interface IFocusableTree
เมธอด
วิธีการ | คำอธิบาย |
---|---|
getNestedTrees() | แสดงผลต้นไม้ที่ฝังอยู่โดยตรงทั้งหมดภายใต้ต้นไม้นี้ โปรดทราบว่ารายการต้นไม้ที่แสดงผลไม่จำเป็นต้องเป็นรายการที่สมบูรณ์ แต่ต้นไม้ทั้งหมดที่แสดงผลต้องได้รับการลงทะเบียนกับ FocusManager นอกจากนี้ การดำเนินการนี้ต้องแสดงผลต้นไม้ที่ฝังอยู่จริงเนื่องจากการละเว้นต้นไม้ที่ฝังอยู่จะส่งผลต่อวิธีที่การเปลี่ยนแปลงโฟกัสแมปกับโหนดและต้นไม้ที่เฉพาะเจาะจง ซึ่งอาจทำให้ผู้ใช้สับสน |
getRestoredFocusableNode(previousNode) | แสดงผล IFocusableNode ของต้นไม้นี้ที่ควรได้รับโฟกัสที่ใช้งานอยู่เมื่อต้นไม้ได้รับโฟกัสกลับ หมายเหตุสำคัญบางอย่างที่ควรพิจารณาเกี่ยวกับวงจรโฟกัสของต้นไม้เมื่อใช้เมธอดเวอร์ชันนี้ที่ไม่แสดงผลลัพธ์เป็น Null มีดังนี้ 1. previousNode ที่ Null ไม่ได้รับประกันสถานะโฟกัสครั้งแรกเนื่องจากสามารถลบโหนดได้ 2. เมธอดนี้จะใช้ก็ต่อเมื่อโฟกัสที่ต้นไม้เอง ไม่ว่าจะผ่านการไปยังส่วนต่างๆ ของแท็บหรือผ่าน FocusManager.focusTree() ในหลายกรณี ระบบจะโฟกัสที่โหนดที่โฟกัสไว้ก่อนหน้านี้โดยตรงแทน ซึ่งจะข้ามเมธอดนี้ 3. ลักษณะการทำงานเริ่มต้น (เช่น แสดงผลเป็นค่าว่างที่นี่) เกี่ยวข้องกับการคืนค่าโหนดก่อนหน้า (previousNode) หรือโฟกัสที่รูทของต้นไม้ 4. บางครั้งโหนดที่ระบุอาจใช้งานไม่ได้แล้ว เช่น ในกรณีที่พยายามโฟกัสโหนดที่เพิ่งถูกนำออกจากต้นไม้หลัก การติดตั้งใช้งานสามารถตรวจสอบความถูกต้องของโหนดเพื่อกำหนดให้โหนดใดเป็นโหนดที่โฟกัสควรเปลี่ยนไปใช้ วิธีการนี้มีจุดประสงค์หลักเพื่อให้การติดตั้งใช้งานต้นไม้มีวิธีระบุโหนดเริ่มต้นที่ดีกว่ารูท |
getRootFocusableNode() | แสดงผลโหนดที่โฟกัสได้ระดับบนสุดของต้นไม้ คาดว่าโหนดที่แสดงผลจะได้รับการโฟกัสในกรณีที่ FocusManager ต้องการโฟกัสต้นไม้ในสถานการณ์ที่ไม่มีโหนดที่โฟกัสอยู่ |
lookUpFocusableNode(id) | แสดงผล IFocusableNode ที่สอดคล้องกับรหัสองค์ประกอบที่ระบุ หรือแสดงผลเป็น Null หากไม่มีโหนดที่ตรงกันภายในต้นไม้นี้ซึ่งมีรหัสดังกล่าว หรือหากรหัสนั้นตรงกับรูทของต้นไม้ รายการนี้จะไม่จับคู่กับต้นไม้ที่ฝังอยู่ |
onTreeBlur(nextTree) | เรียกใช้เมื่อโฮสต์ที่โฟกัสอยู่ก่อนหน้านี้ของต้นไม้นี้เปลี่ยนเป็นโฟกัสแบบพาสซีฟและไม่มีโฮสต์อื่นของต้นไม้นี้มาแทนที่ ซึ่งมีข้อจํากัดในการใช้งานและข้อควรพิจารณาเหมือนกับ onTreeFocus() |
onTreeFocus(node, previousTree) | เรียกใช้เมื่อโหนดของต้นไม้นี้ได้รับโฟกัสที่ใช้งานอยู่ โปรดทราบว่า previousTree ที่ Null ไม่ได้หมายความว่านี่เป็นครั้งแรกที่ Blockly ได้รับโฟกัส อันที่จริงแล้ว เราไม่สามารถคาดเดาอะไรได้มากนักเกี่ยวกับสถานะโฟกัสก่อนหน้า เนื่องจากต้นไม้ Null ก่อนหน้าบ่งชี้เพียงว่า Blockly ไม่ได้โฟกัสอยู่ก่อนที่จะมีโฟกัสที่ต้นไม้นี้ (ซึ่งอาจเกิดขึ้นเนื่องจากโฟกัสออกจาก div การแทรก Blockly หรือในกรณีอื่นๆ เช่น โฟกัสชั่วคราว) โปรดดู IFocusableNode.onNodeFocus() เนื่องจากการใช้งานมีข้อจํากัดเหมือนกับเมธอดดังกล่าว |