我正在尝试在一个可信的div层中设置插入位置,经过一些搜索网络并进行实验后,我使用它在firefox中使用它:
function set(element,position){
element.focus();
var range= window.getSelection().getRangeAt(0);
range.setStart(element.firstChild,position);
range.setEnd(element.firstChild,position);
}
[...]
set(document.getElementById("test"),3);
但在Chrome / webkit中,它会选择div中的所有内容。这是webkit的错误还是我做错了什么? 提前谢谢。
答案 0 :(得分:4)
如果节点是文本节点,则节点内范围边界的偏移量仅为字符偏移量。如果节点是元素,则偏移量是边界之前的子节点数。
例如,如果你有HTML
<div id="myDiv">One <b>two</b> three</div>
...并按如下方式创建一个范围:
var range = document.createRange();
var myDiv = document.getElementById("myDiv");
range.setStart(myDiv, 1);
range.setEnd(myDiv, 1);
...你会得到一个Range,它在div的第一个子节点之后立即开始和结束,这是一个文本节点:
<div id="myDiv">One |<b>two</b> three</div>