【发布时间】:2017-10-01 20:08:22
【问题描述】:
我有 <textarea> 元素并在其中创建范围:
- 通过
document.createRange()创建新范围 - 通过
textarea.childNodes[0]获取<textarea>的唯一子节点 - 通过
range.setStart和range.setEnd设置范围开始和范围结束
然后我打电话给range.getBoundingClientRect():
let textarea = document.querySelector('textarea');
let node = textarea.childNodes[0];
let range = document.createRange();
range.setStart(node, 3);
range.setEnd(node, 5);
console.log(range.getBoundingClientRect());
<textarea>aa bb cc</textarea>
但是我收到了带有所有零字段的ClientRect 对象,即left = top = width = height = 0。为什么这些字段是零?
请注意,如果我将 <textarea> 替换为通常的 div,则一切正常:
let textarea = document.querySelector('div');
let node = textarea.childNodes[0];
let range = document.createRange();
range.setStart(node, 3);
range.setEnd(node, 5);
console.log(range.getBoundingClientRect());
<div>aa bb cc</div>
【问题讨论】:
标签: javascript html css range getboundingclientrect