首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript getSelection问题

JavaScript getSelection问题
EN

Stack Overflow用户
提问于 2016-07-28 15:38:39
回答 1查看 61关注 0票数 0

代码语言:javascript
复制
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);
}
代码语言:javascript
复制
<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>

当我像拖动鼠标一样突出显示文本时,一切都会好起来的。问题是:例如,当我双击文本多次甚至一次时,当然所有内容都会被选中,但一些已经突出显示的文本将恢复正常。你能帮我解决这个问题吗?非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2016-07-28 16:26:42

需要考虑的事情:

Range.extractContents可能不是您要使用的函数。它从页面中删除内容,并将其放入一个临时DocumentFragment中(在内存中,而不是在页面中)。

highlight_text()函数中,这看起来可能是故意的。在没有任何上下文的情况下,我无法确定。

运行该代码片段似乎不会扰乱浏览器中的任何突出显示,无论是单击和拖动,还是双击或其他方式。第一次单击时,当前突出显示的文本将取消突出显示--也许这就是您的意思?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38629957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档