javascript能否从所选内容的源文档中提取精确的(逐字符)HTML?

javascript能否从所选内容的源文档中提取精确的(逐字符)HTML?,javascript,html,Javascript,Html,我正在编写一个脚本,需要复制表示用户选定文本的实际原始HTML。I不需要有效的HTML(带有平衡标记等),我需要选择所包装的源文档中的逐字符字符串 例如,如果HTML如下所示: <p>one two three <strong>four five</strong> six seven</p> 一二三四 五个六七个 。。。用户在第一个“t”(紧跟在单词“one”后面的空格之后)开始选择,在第一个“v”(在单词“five”内部)结束选择,我需要将以

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

例如,如果HTML如下所示:

<p>one two three <strong>four
five</strong> six seven</p>
一二三四
五个六七个

。。。用户在第一个“t”(紧跟在单词“one”后面的空格之后)开始选择,在第一个“v”(在单词“five”内部)结束选择,我需要将以下精确字符串捕获到剪贴板:

two three <strong>four\nfiv
two-threefour\n视频
请注意,捕获的文本需要有开头<代码>字符串标记,但不需要匹配的结尾标记,并且需要包括源文档中单词“four”后存在的换行符(即使在呈现的HTML中没有出现)

到目前为止,我找到的所有帮助都试图规范化所选的HTML,但这并不能满足我的需要


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

您可以尝试以下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>

函数getHTMLOfSelection(){
var范围;
if(document.selection&&document.selection.createRange){
range=document.selection.createRange();
返回range.htmlText;
}
else if(window.getSelection){
var selection=window.getSelection();
如果(selection.rangeCount>0){
范围=选择。getRangeAt(0);
var clonedSelection=range.cloneContents();
var div=document.createElement('div');
子类(克隆选择);
返回div.innerHTML;
}
否则{
返回“”;
}
}
否则{
返回“”;
}
}

有关更多信息,请参阅cloneContents()上Mozilla开发者网络页面的链接:-“部分选定的节点包括使文档片段有效所需的父标记。”据我所知,Rangy也做了同样的事情。。。当它用于突出显示文本时,它会修改您选择的HTML。