8
如何獲取ckeditor中當前光標位置的前一個字符?例如,假設'|' char是「Hello | World」文本中的光標位置,然後我想獲得'o'字符。ckeditor - 獲取當前光標位置的前一個字符
如何獲取ckeditor中當前光標位置的前一個字符?例如,假設'|' char是「Hello | World」文本中的光標位置,然後我想獲得'o'字符。ckeditor - 獲取當前光標位置的前一個字符
鑑於editor
是CKEDITOR.instances
之一,下面應該做的伎倆:
function getPrevChar() {
var range = editor.getSelection().getRanges()[ 0 ],
startNode = range.startContainer;
if (startNode.type == CKEDITOR.NODE_TEXT && range.startOffset)
// Range at the non-zero position of a text node.
return startNode.getText()[ range.startOffset - 1 ];
else {
// Expand the range to the beginning of editable.
range.collapse(true);
range.setStartAt(editor.editable(), CKEDITOR.POSITION_AFTER_START);
// Let's use the walker to find the closes (previous) text node.
var walker = new CKEDITOR.dom.walker(range),
node;
while ((node = walker.previous())) {
// If found, return the last character of the text node.
if (node.type == CKEDITOR.NODE_TEXT)
return node.getText().slice(-1);
}
}
// Selection starts at the 0 index of the text node and/or there's no previous text node in contents.
return null;
}
檢查jsFiddle。試一試:把脫字符號放在任何地方,但大多在^
之前,看看是否涵蓋了棘手的情況。
我們可以通過某種方式修改此函數來獲取當前光標位置之前/之後的完整html嗎? –