我被要求创建一个具有以下功能的文本编辑器:
最好的方法是什么?
我一直在玩execCommand,这可以完成我想要的大部分工作,除了我似乎无法使文本不可编辑,我无法在选择之前和之后添加字符就像这样,我无法跟踪个别变化。
我几乎以为我应该把每个单词都当成标签并将它们视为对象,但是我很难让它们成为可选择的(用鼠标突出显示文本就像在编辑器中一样)。
有没有人知道这类东西的库?
答案 0 :(得分:1)
我可以给你解决方案的一部分:如何选择完整的单词。我的脚本是针对textarea的,但是如果你想使用div contenteditable,你可以进行一些更改。
<强> JSFIDDLE DEMO 强>
var lastSelectStart = 0;
var lastSelectEnd = 0;
saveSelection = function(){
lastSelectStart = document.getElementById("text").selectionStart;
lastSelectEnd = document.getElementById("text").selectionEnd;
}
selectWords = function(){
var divEditable = document.getElementById("text");
html = divEditable.innerHTML;
var start = lastSelectStart;
var end = lastSelectEnd;
var before = html.substring(0,start);
var after = html.substring(end);
var split = before.match(/[ .,;]/gi);
var startIndex = before.lastIndexOf(split[split.length-1]) + 1;
split = after.match(/[ .,;]/gi);
var endIndex = after.indexOf(split[0]);
endIndex = end + endIndex;
divEditable.selectionStart = startIndex;
divEditable.selectionEnd = endIndex;
// startIndex is where you insert your stars and
// (endIndex + number of stars added) is where you insert your stars again
}