ShadowRoot: elementsFromPoint() 方法
非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。
ShadowRoot
接口的 elementsFromPoint()
方法会返回指定坐标(相对于视口)处所有 Shadow Root 元素的数组。这些元素按显示堆叠顺序(z-order)从最顶层到最底层排序。
它的操作方式与 ShadowRoot.elementFromPoint
方法类似。一些浏览器只会返回位于该位置的 Shadow Root 元素。其他浏览器则会包含 Shadow DOM 元素之外的元素,从最顶层的 Shadow DOM 元素一直到文档的根节点,例如 <html>
或 <svg>
根元素。在这些浏览器中,它的操作方式类似于 Document.elementsFromPoint
方法,但能够跨越 Shadow 边界。
语法
js
elementsFromPoint(x, y)
参数
返回值
一个 Element
对象的数组。
示例
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("The custom element had no descendants at x: 20, y: 20.");
}
如果 <my-custom-element>
位于视口左上角附近,并且只包含一个 <div>
,则根据浏览器实现,上述可能会返回以下任一结果:
div div < my-custom-element < body < html
规范
不属于任何标准。
浏览器兼容性
加载中…