Je construis une application où j'ai besoin à plusieurs reprises d'obtenir des listes d'éléments html assis sous un emplacement spécifique (x, y par rapport à la fenêtre, par exemple) . Je considère les approches suivantes, mais aucune n'est satisfaisante:Étant donné une coordonnée x, y, je dois trouver tous les éléments html en dessous
(1) Passez par le html, construisez une structure de données qui garde la trace de la position x, y de chaque élément (x, y -> ensemble d'éléments), puis accédez à cette structure de données lorsque j'ai besoin de faire une recherche. Malheureusement, cette approche est un peu lourde et je cherche une meilleure façon de résoudre ce problème. De plus, je crains que cela ne soit trop lent.
(2) Une approche probablement meilleure que je considère est d'ajouter temporairement un gestionnaire d'événements de haut niveau qui capture tous les événements de survol, de simuler un survol de la souris à la position particulière, On dirait que cela ne retournera que l'élément le plus haut (par exemple, s'il y a un groupe de divs en position absolue sur un emplacement particulier, je pense qu'il ne retournera que celui avec l'indice z le plus élevé, alors que j'ai besoin Je ne suis pas sûr).
(3) Pour IE, il y a componentFromPoint (x, y), mais je ne trouve pas d'équivalent dans un autre navigateur - et cela ne renvoie que l'élément le plus haut.
Notez que l'application est construite sous la forme d'un bookmarklet et que je n'ai aucun contrôle sur le code html sous-jacent, ce qui limite malheureusement toute solution côté serveur. Je suis prêt à utiliser des bibliothèques (actuellement sur jquery).
FYI, le meilleur que j'ai trouvé ici est Getting DIV id based on x & y position; Je me demande s'il y a quelque chose de plus à jour.
Je suis probablement un git - quel est votre objectif * real *? Il pourrait y avoir une solution plus élégante à celle que vous étudiez actuellement. –
Notre application permet aux utilisateurs de placer des div avec notre contenu sur n'importe quelle page Web. Parce que le html de la page sous-jacente peut être rendu différemment en fonction de facteurs hors de notre contrôle (par exemple, type de navigateur, ou taille de la fenêtre peut changer position/alignement des éléments individuels), nous ne pouvons pas positionner les divs à gauche de la page dans son ensemble (ils sembleraient s'asseoir à un endroit différent en fonction de l'environnement de visualisation, ce qui n'est pas bon). Au lieu de cela, nous devons attacher les divs à un élément dont nous savons qu'il ne bouge pas (ou à un élément se trouvant directement sous la div). D'où la question. –