有没有办法获取文本节点的边界矩形?
getBoundingClientRect() 方法仅在元素上定义,并且父元素比实际文本节点大。
如果您不需要支持 IE8 或更早版本,您可以使用Range https://developer.mozilla.org/docs/Web/API/Range to 选择文本节点 https://developer.mozilla.org/docs/Web/API/range.selectNode,然后直接从Range
.
示例(应该在此页面中工作):
var text = document.querySelector('#question-header .question-hyperlink').childNodes[0];
var range = document.createRange();
range.selectNode(text);
var rect = range.getBoundingClientRect();
range.detach(); // frees up memory in older browsers
您还可以重复使用Range
如果您对多个文本节点执行此操作,则对象;只是确保不要打电话range.detach()
直到你完成。 (笔记:Range.detach()
现在是无操作DOM 标准 http://dom.spec.whatwg.org/#dom-range-detach,尽管某些较旧的浏览器在调用后仍会禁用该范围。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)