2008-12-28 11 views

Respuesta

13

No directamente. TextNode no tiene las extensiones originales de IE offset * (y similares) para medir el posicionamiento en la ventana gráfica.

En IE solamente, puede crear un objeto TextRange, intente laboriosamente alinearlo con los límites del TextNode, luego mida el boundingLeft/boundingTop del TextRange y agréguelo a la posición del elemento principal (obtenido por el medio usual). Sin embargo, este es un montón de trabajo para una solución de navegador único potencialmente inestable.

Otro enfoque con el que podría salirse con la suya sería envolviendo el texto en un elemento de tramo (ya sea en el documento, o dinámicamente y/o temporalmente por secuencia de comandos) y utilizando el tramo para medir el posicionamiento, suponiendo que no recogiendo cualquier estilo adicional que pueda afectar la posición. Sin embargo, tenga en cuenta que un tramo envolvente puede no dar los valores esperados derecho/inferior; dependiendo de lo que quieras hacer con él, podrías terminar envolviendo el primer y el último personaje o algún otro arreglo.

En resumen: urgh, nada bueno.

+0

Usó su idea, ¡gracias por la información! http://stackoverflow.com/questions/6990350/jquery-get-text-currently-shown-ie-not-just-visible/6990382#6990382 – AlienWebguy

+0

vergüenza, pero envolver en un lapso está modificando la página así que no me utilices – SuperUberDuper

0

Eche un vistazo a this article - usa la propiedad offsetParent para descubrir recursivamente el desplazamiento.

Siempre recomendaría jquery sobre rodar sus propios métodos para cosas que varían en el navegador como esta. ¡El jquery CSS functions parece tener los métodos que necesitas!

+1

Desafortunadamente, los nodos de texto DOM no parecen tener propiedades offsetLeft/offsetTop. Y jQuery tampoco maneja bien los nodos de texto: no pude averiguar cómo escribir una expresión de selector para ellos (sin importar que children() no devuelva nodos de texto). – dpq

Cuestiones relacionadas