javascript能否从所选内容的源文档中提取精确的(逐字符)HTML?
我正在编写一个脚本,需要复制表示用户选定文本的实际原始HTML。I不需要有效的HTML(带有平衡标记等),我需要选择所包装的源文档中的逐字符字符串 例如,如果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”内部)结束选择,我需要将以
<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。