2017-02-15 25 views
2

我現在正在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()); 

我的問題是我如何得到所選節點的父標籤?

例詞是,

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

我的選擇是,

<b>welcome</b> 

我如何獲得下面的父標籤。

<p></p> 
+0

嘗試'var sel = editor.getSelection()。getSelectedElement(); alert(element.getName());' –

+0

對不起,我正在嘗試這個,但我沒有工作。 –

+0

http://docs.ckeditor.com/#!/api/CKEDITOR.dom.selection –

回答

2

我找到了答案。

//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隨着父標籤