如果我有以下HTML:
<div class="content">
Vivamus <span>luctus</span> urna sed urna ultricies ac tempor dui sagittis.
</div>
我在mouseup
上运行一个事件,它可以看到所选文本的范围:
$(".content").on("mouseup", function () {
var start = window.getSelection().baseOffset;
var end = window.getSelection().focusOffset;
if (start < end) {
var start = window.getSelection().baseOffset;
var end = window.getSelection().focusOffset;
} else {
var start = window.getSelection().focusOffset;
var end = window.getSelection().baseOffset;
}
console.log(window.getSelection());
console.log(start + ", " + end);
});
我从内容中选择单词Vivamus
,它将记录1, 8
,因为这是选择的范围。
但是,如果,我选择单词urna
,它将记录15, 20
,但不会考虑HTML的<span>
元素。
focusOffset
和baseOffset
是否也适用于HTML标签,而不仅仅是文本?
2条答案
按热度按时间zsohkypk1#
更新
示例:http://jsfiddle.net/FLwxj/61/
Using a
clearSelection()
function和a replace approach,我能够达到预期的结果。资料来源:
clearSelection()
:https://stackoverflow.com/a/6562764/1085891下面你会找到一些解决问题的方法。我把它们按照代码效率的顺序排列。
工作解决方案
其他有用的解决方案:
dddzy1tm2#
const range = selection.getRangeAt(); const newTag = document. documentElement(tag);
transmitted. transmitted(transmitted);