CKEDITOR ::获取所选文本的父节点

时间:2017-02-15 06:48:24

标签: javascript jquery html ckeditor

我现在在CKEditor工作。我有一个问题给你们。

我正在CKEditor的文本区域中选择特定文本并获取所选

节点HTML内容使用下面的代码。

 var editor = CKEDITOR.instances.editor1;
 var sel = editor.getSelection();
 sel.selectElement(sel.getStartElement());
 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());
                  }
  alert(el.getHtml());

以下返回当前选定的文本HTML内容。

alert(el.getHtml());

我的问题是我如何获得所选节点的父标签?

示例

示例Word是,

<p>hi<b>welcome</b>world<p>

我的选择是,

<b>welcome</b>

如何获得以下父标记。

<p></p>

1 个答案:

答案 0 :(得分:1)

我找到了答案。

//Get range
range = xhtmlCKEditor.createRange();

range.setStart(anchors[0].tag , 0 );
range.setEnd(anchors[0].tag.getLast(), 1 );

var firstNode = range.startContainer.getParent();
var lastNode = range.endContainer.getParent();
if(lastNode.type === CKEDITOR.NODE_ELEMENT && lastNode.getName() === "span")
{
    range.setEndAfter(lastNode);

}

//Make end Get full if is tcElement
if(firstNode.type === CKEDITOR.NODE_ELEMENT && firstNode.getName() === "p")
{
    range.setStartBefore(firstNode);
}
xhtmlCKEditor.getSelection().selectRanges([range]);

然后打印选择它将获得带有父标记的HTML。