ShadowRoot: phương thức elementsFromPoint()

Non-standard: This feature is not standardized. We do not recommend using non-standard features in production, as they have limited browser support, and may change or be removed. However, they can be a suitable alternative in specific cases where no standard option exists.

Phương thức elementsFromPoint() của giao diện ShadowRoot trả về một mảng gồm tất cả các phần tử shadow root tại tọa độ được chỉ định (tương đối với viewport). Các phần tử được sắp xếp từ phần tử trên cùng (cao nhất trong thứ tự z của hiển thị) đến phần tử dưới cùng.

Nó hoạt động tương tự như phương thức ShadowRoot.elementFromPoint. Một số trình duyệt chỉ trả về các phần tử shadow root có mặt tại vị trí đó. Những trình duyệt khác bao gồm cả các phần tử nằm ngoài shadow DOM, từ phần tử shadow DOM ở lớp trên cùng đến nút gốc của tài liệu, như phần tử gốc <html> hoặc <svg>. Trong các trình duyệt này, nó hoạt động tương tự phương thức Document.elementsFromPoint, nhưng có khả năng đi qua ranh giới shadow.

Cú pháp

js
elementsFromPoint(x, y)

Tham số

x

Tọa độ ngang của một điểm, tương đối với mép trái của viewport hiện tại.

y

Tọa độ dọc của một điểm, tương đối với mép trên của viewport hiện tại.

Giá trị trả về

Một mảng các đối tượng Element.

Ví dụ

js
const customElem = document.querySelector("my-custom-element");
const shadow = customElem.shadowRoot;
const elements = shadow.elementsFromPoint(20, 20);
const msg = elements.map((el) => el.localName).join(" < ");
if (msg) {
  console.log(msg);
} else {
  console.log("Phần tử custom không có nút con nào tại x: 20, y: 20.");
}

Nếu <my-custom-element> ở gần góc trên bên trái của viewport, và chứa một <div> duy nhất, kết quả trên có thể là một trong hai giá trị sau, tùy theo cách triển khai của trình duyệt:

div
div < my-custom-element < body < html

Thông số kỹ thuật

Không thuộc bất kỳ tiêu chuẩn nào.

Tương thích trình duyệt

Xem thêm