Meskipun pertanyaan berikut mungkin tidak benar-benar menjawab pertanyaan, karena ini adalah hasil pertama dari googling (googler mungkin tidak menanyakan pertanyaan yang persis sama :), harap ini akan memberikan masukan tambahan.
Sebenarnya ada dua pendekatan berbeda untuk mendapatkan daftar semua elemen yang mouse saat ini berakhir (untuk browser yang lebih baru, mungkin):
Pendekatan "struktural" - Pohon DOM menaik
Seperti dalam jawaban dherman, seseorang dapat menelepon
var elements = document.querySelectorAll(':hover');
Namun, ini mengasumsikan bahwa hanya anak-anak yang akan menghamparkan leluhur mereka, yang biasanya terjadi, tetapi tidak benar secara umum, terutama ketika berhadapan dengan SVG di mana elemen di cabang berbeda dari pohon DOM mungkin saling tumpang tindih.
Pendekatan "visual" - Berdasarkan tumpang tindih "visual"
Metode ini digunakan document.elementFromPoint(x, y)
untuk menemukan elemen paling atas, menyembunyikannya untuk sementara (karena kami segera memulihkannya dalam konteks yang sama, browser tidak akan benar-benar merendernya), lalu lanjutkan untuk menemukan elemen teratas kedua ... Terlihat sedikit hacky, tetapi ia mengembalikan apa yang Anda harapkan saat ada, misalnya, elemen saudara dalam pohon saling menutupi satu sama lain. Silakan temukan posting ini untuk lebih jelasnya,
function allElementsFromPoint(x, y) {
var element, elements = [];
var old_visibility = [];
while (true) {
element = document.elementFromPoint(x, y);
if (!element || element === document.documentElement) {
break;
}
elements.push(element);
old_visibility.push(element.style.visibility);
element.style.visibility = 'hidden'; // Temporarily hide the element (without changing the layout)
}
for (var k = 0; k < elements.length; k++) {
elements[k].style.visibility = old_visibility[k];
}
elements.reverse();
return elements;
}
Cobalah keduanya, dan periksa hasil yang berbeda.