if (!window.x) {
x = {};
}
x.Selector = {};
x.Selector.getSelected = function() {
if (window.getSelection) {
t = window.getSelection();
} else if (document.getSelection) {
t = document.getSelection();
} else if (document.selection) {
t = document.selection.createRange().text;
}
return t;
}
function htmlSpanHlt() {
element = document.createElement("span");
element.setAttribute('class', 'hlt');
return element;
}
function highlight_text(sel) {
span = htmlSpanHlt();
if (sel.getRangeAt) {
range = sel.getRangeAt(0);
}
span.appendChild(range.extractContents());
range.insertNode(span);
}<div class="highlight">
<p>
Lorem ipsum dolor sit amet, eu ius autem labitur complectitur, eos aliquip nostrud ei, ludus erroribus vel ex. Sea ex erat quaeque intellegam, et diam iusto deterruisset sea. Summo minimum periculis pro ea, diam soleat id pro. Cu putent inimicus eum,
hinc comprehensam ex qui. Delectus appetere interesset ad mel.
<br>
<br>Ius ut quis summo utroque, in sea numquam percipit eloquentiam. Vidit mucius iudicabit ius id. Id mel vero dolorem. Sale lorem tempor ius ex, commodo reprehendunt pro cu. Mel ea accumsan mentitum liberavisse, labores fabellas per te.
</p>
</div>
当我像拖动鼠标一样突出显示文本时,一切都会好起来的。问题是:例如,当我双击文本多次甚至一次时,当然所有内容都会被选中,但一些已经突出显示的文本将恢复正常。你能帮我解决这个问题吗?非常感谢。
发布于 2016-07-28 16:26:42
需要考虑的事情:
Range.extractContents可能不是您要使用的函数。它从页面中删除内容,并将其放入一个临时DocumentFragment中(在内存中,而不是在页面中)。
在highlight_text()函数中,这看起来可能是故意的。在没有任何上下文的情况下,我无法确定。
运行该代码片段似乎不会扰乱浏览器中的任何突出显示,无论是单击和拖动,还是双击或其他方式。第一次单击时,当前突出显示的文本将取消突出显示--也许这就是您的意思?
https://stackoverflow.com/questions/38629957
复制相似问题