我遇到了只在 FF 中发生的错误文本选择行为。
通过点击 li
元素的项目符号 FF 显示选择跨越整个 li
元素但是在 JS 中获得这个选择范围导致只选择了 1 个字符,这显然是不正确的.
通过使用鼠标从文本开始拖动选择来选择文本为当前选择创建正确的范围
。
Live fiddle 在这里描述问题:http://jsfiddle.net/keaukraine/4ZE3a/
请您参考如下方法:
您误解了范围。范围边界表示为节点内的偏移量;如果该节点是文本节点,则它是该节点文本中的字符偏移量。但是,如果节点是一个元素,则偏移量是边界之前的子节点数,而不是字符偏移量。在这种情况下,选择范围的起始边界位于 <li>
中的偏移量 0 处。元素和结束边界位于 <li>
中的偏移量 1元素。 <li>
元素只有一个子节点(文本节点),因此范围包含元素的所有内容。