Comparar los elementos HTML por el índice z real

Dados dos elementos HTML básicos A y B en el mismo documento, ¿cómo puedo saber cuál está "más cerca" del usuario (es decir, si se superponen, cuál está ocultando la otra)?

losEspecificación CSS del W3C describe los contextos de apilamiento, que deben implementar los motores de representación compatibles. Sin embargo, no pude encontrar una manera de acceder a esta información en un programa de JavaScript, con navegadores cruzados o no. Todo lo que puedo leer es el css.z-index propiedad, que per se no dice mucho, ya que la mayor parte del tiempo se establece enauto o, incluso cuando se expresa como un valor numérico, no es un indicador confiable de cómo se muestra realmente (si pertenecen a contextos de clasificación diferentes, la comparación de los índices z es irrelevante).

Tenga en cuenta que estoy interesado enarbitrario Elementos: si ambos elementos están debajo del puntero del mouse, solo uno se considerará "suspendido", por lo que puedo encontrar fácilmente el más cercano en este caso. Sin embargo, estoy buscando una solución más general, preferiblemente una que no implique volver a implementar el algoritmo de apilamiento que el motor de renderizado ya está realizando.

Actualizar: Permítanme aclarar un poco la razón detrás de esta pregunta: Hace poco abordéuna pregunta eso expuso una limitación en el mecanismo de arrastrar y soltar de jQuery: no tiene en cuenta los índices z al soltar, por lo que si un elemento oculta a otro, aún puede realizar la operación de soltar en el elemento que está "detrás". Si bien la pregunta vinculada fue respondida para el caso particular de OP, el problema general persiste y no hay una solución fácil que yo sepa.

la respuesta de alex a continuación es útil, pero no lo suficiente para el caso que nos ocupa: al arrastrar, el elemento arrastrado en sí mismo (o más precisamente su ayudante) es el elemento más alto debajo del cursor del mouse, por lo queelementFromPoint volveráeso en vez desiguiente Elemento superior, que realmente necesitamos (solución: estilo el cursor por lo que se coloca fuera del ayudante). Las otras estrategias de intersección que emplea jQuery también tienen en cuenta más de un punto, lo que complica la tarea de determinar el elemento superior que intersecta al ayudante de alguna manera. La posibilidad de comparar (u ordenar) los elementos por el índice z real haría que el modo de intersección "con detección de índice z" fuera viable para el caso general.

Respuestas a la pregunta(3)

Su respuesta a la pregunta