Giao diện IFocusableNode
Biểu thị mọi thứ có thể có tiêu điểm đầu vào.
Chữ ký:
export interface IFocusableNode
Phương thức
Phương thức | Mô tả |
---|---|
canBeFocused() | Cho biết liệu nút này có cho phép lấy tiêu điểm hay không. Nếu phương thức này trả về giá trị false thì không có phương thức IFocusableNode nào khác được gọi. Xin lưu ý rằng bạn phải đặc biệt cẩn thận nếu các phương thức triển khai của hàm này thay đổi động giá trị trả về trong suốt thời gian tồn tại của nút vì một số điều kiện môi trường có thể ảnh hưởng đến khả năng lấy tiêu điểm của phần tử DOM của nút này (chẳng hạn như liệu phần tử có chỉ mục thẻ dương hay bằng 0). Ngoài ra, việc thay đổi từ giá trị true thành giá trị false trong khi nút giữ tiêu điểm sẽ không thay đổi ngay tiêu điểm hiện tại của nút cũng như trạng thái nội bộ của FocusManager. Do đó, điều này có thể dẫn đến việc một số hàm của nút được gọi sau khi mất tiêu điểm (vì trước đó nút được coi là có thể lấy tiêu điểm tại thời điểm được lấy tiêu điểm). Nhìn chung, các phương thức triển khai luôn phải trả về giá trị true ở đây, trừ phi có trường hợp mà nút này cần được bỏ qua để cân nhắc tiêu điểm. Ví dụ: bị vô hiệu hoá, chỉ đọc, chỉ là một thành phần trang trí trực quan hoặc một nút không có biểu diễn trực quan phải triển khai giao diện này (ví dụ: do giao diện mẹ mở rộng giao diện này). Hãy lưu ý đến các phương pháp hay nhất về khả năng tiếp cận khi xác định xem một nút có nên lấy tiêu điểm hay không, vì ngay cả các phần tử bị vô hiệu hoá và chỉ đọc vẫn thường liên quan đến việc cung cấp ngữ cảnh tổ chức cho người dùng (đặc biệt là khi sử dụng trình đọc màn hình). |
getFocusableElement() | Trả về phần tử DOM có thể được yêu cầu rõ ràng để nhận tiêu điểm. LƯU Ý QUAN TRỌNG: Xin lưu ý rằng phần tử này dự kiến sẽ xuất hiện trên trang vì phần tử này sẽ được lấy tiêu điểm một cách rõ ràng và có kiểu thay đổi tuỳ thuộc vào trạng thái tiêu điểm hiện tại (tức là bị làm mờ, được lấy tiêu điểm chủ động và được lấy tiêu điểm thụ động). Phần tử sẽ có một trong hai kiểu được đính kèm (nếu không có kiểu nào thì tức là bị mờ/không được lấy tiêu điểm): – blocklyActiveFocus – blocklyPassiveFocus Phần tử được trả về cũng phải có một mã nhận dạng hợp lệ được chỉ định và mã nhận dạng này phải là duy nhất trên toàn bộ trang. Nếu không có một mã nhận dạng riêng biệt phù hợp, thì việc cố gắng lấy tiêu điểm một nút (chẳng hạn như thông qua một lượt nhấp chuột) có thể dẫn đến việc một nút khác có cùng mã nhận dạng thực sự được FocusManager lấy tiêu điểm. Phần tử được trả về phải hiển thị nếu nút từng được lấy tiêu điểm thông qua FocusManager.focusNode() hoặc FocusManager.focusTree(). Phần tử có thể bị ẩn cho đến khi onNodeFocus() được gọi hoặc bị ẩn khi gọi onNodeBlur(). Phần tử thực tế được trả về dự kiến sẽ không thay đổi trong suốt vòng đời của nút (tức là các thuộc tính của phần tử có thể thay đổi nhưng không bao giờ được trả về một phần tử mới). Ngoài ra, phần tử được trả về sẽ bị ghi đè tabindex trong suốt vòng đời của nút này và FocusManager. Nếu một nút yêu cầu khả năng được lấy tiêu điểm trực tiếp mà không cần được lấy tiêu điểm thông qua FocusManager trước, thì nút đó phải đặt chỉ mục thẻ riêng. |
getFocusableTree() | Trả về cây mẹ gần nhất của nút này (trong trường hợp một cây có các cây riêng biệt bên dưới), đại diện cho cây mà nút này thuộc về. |
onNodeBlur() | Được gọi khi nút này mất tiêu điểm hoạt động. Có thể cửa sổ đó vẫn có tiêu điểm thụ động. Thao tác này có các quy định hạn chế khi triển khai giống như onNodeFocus(). |
onNodeFocus() | Được gọi khi nút này nhận được tâm điểm hoạt động. Xin lưu ý rằng các hoạt động triển khai có thể thay đổi các đối tượng sửa đổi về khả năng hiển thị, nhưng nên tránh những trường hợp sau: – Tạo hoặc xoá các phần tử DOM (kể cả thông qua trình kết xuất hoặc ngăn kéo). – Ảnh hưởng đến tiêu điểm thông qua các lệnh gọi DOM focus() hoặc FocusManager. |