domtextnode

Retrieving DOM textnode position


Is it possible to retrieve the geometric position (i.e. top/left offsets from either the parent element, the page, etc) of a text node?


Solution

  • Not directly. TextNode does not have the originally-IE offset* (and similar) extensions for measuring on-viewport positioning.

    On IE only, you could create a TextRange object, laboriously attempt to align it with the bounds of the TextNode, then measure the boundingLeft/boundingTop of the TextRange, and add it to the position of the parent element (obtained by the usual means). However this is a bunch of work for a potentially-wobbly single-browser solution.

    Another approach you might be able to get away with would be wrapping the text in a span element (either in the document, or dynamically and/or temporarily by script), and using the span to measure positioning, assuming it's not picking up any additional styles that may affect the position. Note however that a wrapped span may not give the expected right/bottom values; depending on what you want to do with it, you might end up wrapping the first and last character or some other arrangement.

    In summary: urgh, nothing good.