繁体   English   中英

如何在ckeditor中获取所选文本的html源

[英]how to get the html source of the selected text in ckeditor

假设我在ckeditor中写了5行,并且选择了第二行和第三行。 如何获取所选文本的html源。假设将始终连续选择代码。

function getSelectionHtml()
{
editor=CKEDITOR.instances.editor1;
var sel = editor.getSelection();
var ranges = sel.getRanges();
var el = new CKEDITOR.dom.element("div");
for (var i = 0, len = ranges.length; i < len; ++i) {
    el.append(ranges[i].cloneContents());
}
  console.log("OrgHtml:\n"+el.getHtml());
  return el.getHtml();
}

使用此功能获取所选文本的InnerHtml值。我也在使用此功能。

所有选定的HTML节点-CKEditor

注意:这完全取决于ckeditor中的当前数据结构。 如果您选择了标签内的文本,并且部分选择了文本,则将返回完整标签。

注意例如:

<p>my ckeditor text</p> enclosed in a p-tag

如果您选择了“编辑器”,则完整的p标签将返回,因为您说您需要HTML而不是选定的文本。

码:

var range = editor.getSelection().getRanges()[0] //editor is instance of your ck-editor
var selectedHTML = [];
console.log(range.startPath().elements[0].$, 'first')
selectedHTML.push(range.startPath().elements[0].$)
var selectedSibling = "";
if(range.startPath().elements[0].$ != range.endPath().elements[0].$) {
    selectedSibling = range.startContainer.$.parentNode.nextElementSibling
    while(selectedSibling && (selectedSibling != range.endPath().elements[0].$)) {
        console.log(selectedSibling, 'next')
        selectedHTML.push(selectedSibling)
        selectedSibling = selectedSibling.nextElementSibling
    }
    console.log(range.endPath().elements[0].$, 'last')
    selectedHTML.push(range.endPath().elements[0].$)
}
console.log(selectedHTML, 'selected HTML  Tags')

您可以通过以下方式获得主动选择

var sel = window.getSelection();
if (sel.rangeCount) {
    var container = document.createElement("div");
    for (var i = 0, len = sel.rangeCount; i < len; ++i) {
        container.appendChild(sel.getRangeAt(i).cloneContents());
    }
    text = container.innerHTML;
}

您选择的HTML将存储在可变text

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM