2008-12-28 11 views

Répondre

13

Pas directement. TextNode ne dispose pas des extensions * offset IE (et similaires) pour mesurer le positionnement sur la fenêtre. Sur IE uniquement, vous pouvez créer un objet TextRange, essayer laborieusement de l'aligner avec les limites du TextNode, puis mesurer le boundingLeft/boundingTop du TextRange et l'ajouter à la position de l'élément parent (obtenu par les moyens habituels). Cependant, il s'agit d'un tas de travail pour une solution de navigateur unique potentiellement vacillante. Une autre approche avec laquelle vous pourriez vous en passer serait d'encapsuler le texte dans un élément span (soit dans le document, soit dynamiquement et/ou temporairement par script), et d'utiliser le span pour mesurer le positionnement, en supposant qu'il ne soit pas ramasser tous les styles supplémentaires qui peuvent affecter la position. Notez cependant qu'une étendue enveloppée peut ne pas donner les valeurs droite/bas attendues; en fonction de ce que vous voulez faire avec, vous pourriez finir par envelopper le premier et le dernier caractère ou un autre arrangement.

En résumé: urgh, rien de bon.

+0

Utilisé votre idée - merci pour la perspicacité! http://stackoverflow.com/questions/6990350/jquery-get-text-currently-shown-ie-not-just-visible/6990382#6990382 – AlienWebguy

+0

honte mais l'emballage dans une travée est en train de modifier la page alors inutile de m'en servir – SuperUberDuper

0

Jetez un coup d'œil à this article - il utilise la propriété offsetParent pour déterminer de façon récursive le décalage.

Je recommande toujours jquery plutôt que de lancer vos propres méthodes pour les choses qui varient selon les navigateurs. Les jquery CSS functions semblent avoir les méthodes dont vous avez besoin!

+1

Malheureusement, les nœuds de texte DOM ne semblent pas avoir les propriétés offsetLeft/offsetTop. Et jQuery ne gère pas bien les nœuds de texte: je n'ai pas pu trouver comment écrire une expression de sélection pour eux (sans se soucier que children() ne renvoie pas de nœuds de texte). – dpq

0

Il n'existe pas de navigateur intégré pour effectuer cette opération. Je utilise jQuery avec le plugin Dimensions: http://brandonaaron.net/docs/dimensions/

Il est multi-navigateur et vous donnera la hauteur, la largeur et x & décalages y, entre autres.