Благодарение на този въпрос и отговор, публикуван от Тим Даун, аз направи функция за получаване на думата, предшестваща каретката, в "contenteditable" div.
Ето цигулка и ето функцията:
function getWordPrecedingCaret (containerEl) {
var preceding = "",
sel,
range,
precedingRange;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount > 0) {
range = sel.getRangeAt(0).cloneRange();
range.collapse(true);
range.setStart(containerEl, 0);
preceding = range.toString();
}
} else if ((sel = document.selection) && sel.type != "Control") {
range = sel.createRange();
precedingRange = range.duplicate();
precedingRange.moveToElementText(containerEl);
precedingRange.setEndPoint("EndToStart", range);
preceding = precedingRange.text;
}
var lastWord = preceding.match(/(?:\s|^)([\S]+)$/i);
if (lastWord) {
return lastWord;
} else {
return false;
}
}
Моят въпрос: След като получа последната дума, как мога да я премахна от div? Обърнете внимание, че не искам да премахвам каквото и да е срещане на думата в div, само срещане пред каретката.
Благодаря ви предварително!