javascript可以从选择中的源文档中提取精确(逐个字符)的HTML吗?

时间:2014-07-02 18:24:11

标签: javascript html

我正在编写一个脚本,需要复制代表用户选择文本的实际原始HTML。我需要有效的HTML(带有平衡标签等),我需要来自选择所包装的源文档中的逐字符字符串。

例如,如果HTML如下:

<p>one two three <strong>four
five</strong> six seven</p>

...并且用户在第一个&#39;#开始选择。 (在单词&#39; one&#39;之后的空格之后)并在第一个&#39; v&#39;之后结束选择。 (在&#39; five&#39;中),我需要将以下完全字符串捕获到剪贴板:

two three <strong>four\nfiv

请注意,捕获的文本需要具有开头string标记,但不是匹配的结束标记,并且需要在单词“四”之后包含源文档中存在的换行符。 (即使这不会出现在呈现的HTML中)。

到目前为止,我发现的所有帮助都试图规范化所选的HTML,但这并不适用于我需要的内容。

这可能被捕获吗?如果是这样,我该怎么做呢?提前感谢任何建议或帮助!

1 个答案:

答案 0 :(得分:0)

您可以尝试以下javascript函数: -

<script type="text/javascript">
function getHTMLOfSelection () {
  var range;
  if (document.selection && document.selection.createRange) {
    range = document.selection.createRange();
    return range.htmlText;
  }
  else if (window.getSelection) {
    var selection = window.getSelection();
    if (selection.rangeCount > 0) {
      range = selection.getRangeAt(0);
      var clonedSelection = range.cloneContents();
      var div = document.createElement('div');
      div.appendChild(clonedSelection);
      return div.innerHTML;
    }
    else {
      return '';
    }
  }
  else {
    return '';
  }
}
</script>