javascript获取网页中所选文本的段落

Lil*_*ilz 19 javascript webpage document window paragraph

突出显示文本后,我想获取所选文本所在的段落.

var select = window._content.document.getSelection();
Run Code Online (Sandbox Code Playgroud)

有什么指针吗?

cle*_*tus 20

这实际上很难做到,因为你必须考虑六种情况:

  1. 选择不在段落内(简单);
  2. 整个选择在一个段落内(简单);
  3. 整个选择跨越一个或多个兄弟段落(更难);
  4. 选择以不在段落内的元素开始或结束(更难);
  5. 跨越的段落处于不同的级别,例如,一个在列表项内,而另外两个是列表的兄弟级(甚至更难); 和
  6. 以上的一些组合.

首先,您必须决定解决方案的完整程度.我只会介绍(1)和(2)中最简单的情况.

function getSelectedParagraphText() {
  if (window.getSelection) {
      selection = window.getSelection();
  } else if (document.selection) {
      selection = document.selection.createRange();
  }
  var parent = selection.anchorNode;
  while (parent != null && parent.localName != "P") {
    parent = parent.parentNode;
  }
  if (parent == null) {
    return "";
  } else {
    return parent.innerText || parent.textContent;
  }
}
Run Code Online (Sandbox Code Playgroud)

注意:如果您在标签之后也将textContent替换为innerHTML.

编辑:更好的版本,包括更好的浏览器兼容性.


Nad*_*mli 5

我找到了这个有用的例子.

似乎有些浏览器支持window.getSelection(),而其他浏览器支持document.getSelection().该示例处理所有这些情况.