Tôi đang xây dựng một ứng dụng mà tôi liên tục cần phải lấy danh sách các phần tử html đang ngồi dưới một vị trí cụ thể (x, y so với khung nhìn, vd) . Tôi đang xem xét các cách tiếp cận sau đây, nhưng không có cách nào thỏa mãn:Với toạ độ x, y, tôi cần phải tìm tất cả các phần tử html bên dưới nó
(1) Đi qua html, tạo cấu trúc dữ liệu theo dõi vị trí x, y của mọi phần tử (x, y -> tập hợp các phần tử), và sau đó truy cập cấu trúc dữ liệu này khi tôi cần tìm kiếm. Thật không may, phương pháp này là một chút cồng kềnh và tôi đang tìm kiếm một cách tốt hơn để giải quyết vấn đề này. Thêm vào đó, tôi sợ nó có thể là quá chậm. Một phương pháp tốt hơn tôi đang xem xét là tạm thời thêm một trình xử lý sự kiện cấp cao nhất để nắm bắt tất cả các sự kiện di chuột, giả mạo chuột di chuột tại vị trí cụ thể và sau đó xóa trình xử lý, nhưng trông như thế này sẽ chỉ trả lại phần tử cao nhất (ví dụ, nếu có một số div vị trí tuyệt đối trên một vị trí cụ thể, tôi nghĩ nó sẽ chỉ trả về giá trị z cao nhất, trong khi tôi cần tất cả, mặc dù Tôi không chắc).
(3) Đối với IE, có componentFromPoint (x, y), nhưng tôi không thể tìm thấy tương đương trong trình duyệt khác - và nó chỉ trả về phần tử cao nhất.
Lưu ý rằng ứng dụng được xây dựng dưới dạng bookmarklet và tôi không có quyền kiểm soát đối với html cơ bản - điều này không may làm giảm bất kỳ giải pháp phía máy chủ dễ dàng nào.
Tôi sẵn sàng sử dụng thư viện (hiện có trên jquery).
FYI, cho đến thời điểm tốt nhất tôi tìm thấy ở đây là Getting DIV id based on x & y position; tự hỏi liệu có điều gì đó cập nhật hơn không.
Tôi có thể là một git - mục tiêu * thực * của bạn là gì? Có thể có một giải pháp thanh lịch hơn cho người bạn hiện đang điều tra. –
Ứng dụng của chúng tôi cho phép người dùng đặt div với nội dung của chúng tôi trên bất kỳ trang web nào. Bởi vì html của trang cơ bản có thể được hiển thị khác nhau dựa trên các yếu tố ngoài tầm kiểm soát của chúng tôi (ví dụ: loại trình duyệt hoặc kích thước cửa sổ có thể thay đổi vị trí/căn chỉnh của các phần tử riêng lẻ), chúng tôi không thể định vị các div tương ứng với đầu/bên trái của trang như một toàn thể (họ sẽ xuất hiện để ngồi ở một nơi khác nhau dựa trên môi trường xem, đó là không tốt). Thay vào đó, chúng ta cần gắn các div vào một phần tử mà chúng ta biết không di chuyển (hoặc đến một phần tử nằm ngay bên dưới div). Do đó câu hỏi. –