2
好的。我使用Markjs.io和TinyMCE創建了一個突出顯示長句子(單詞數量超過n個)的小工具。在TinyMCE上更新句子的亮點
我目前有文字在加載時正確突出顯示。然後我嘗試添加som .on('keyup',function())和.on('change',function())來運行該函數並在我輸入時重新計算高亮/標記。
但是,這種方法顯然不斷返回原文。而且我無法在該字段添加任何新文字。
我想要做什麼:
所以我想要做的是找出我的功能應該如何運行,以保持重新計算,並強調長句。但從某種意義上說,它實際上也增加了我輸入的新文本或我在TinyMCE編輯器中進行的當前編輯。
上CodePen可在這裏:http://codepen.io/MarkBuskbjerg/pen/rWWRbX
HTML:
<div id="myTextArea" contenteditable="true">
Any text will do. Above 16 words in a single sentence - from dot to dot - will be highlightet for all the world to see.
</div>
的JavaScript(jQuery的):
tinymce.init({
selector: '#myTextArea',
height: 300,
setup: function(ed) {
ed.on('change', myCustomInitInstance);
ed.on('keyup', myCustomInitInstance);
ed.on('paste', myCustomInitInstance);
ed.on('cut', myCustomInitInstance);
},
init_instance_callback: "myCustomInitInstance",
});
function myCustomInitInstance(inst) {
var rawText = tinyMCE.get('myTextArea').getContent({
format: 'text'
});
var sentenceArray = rawText.split(".");
var matchWarning = [];
var longSentence = 16;
var words;
var wordCounter;
var output;
for (var i in sentenceArray) {
words = sentenceArray[i].split(" ");
wordCounter = words.length;
if (wordCounter > longSentence) {
matchWarning.push(sentenceArray[i]);
}
}
var $clone = $("#myTextArea").clone();
$clone.mark(matchWarning, {
"separateWordSearch": false,
});
tinyMCE.activeEditor.setContent($clone.html());
}):
感謝@Sam!這完全釘了它。如果你現在可以看到我,你會看到我快樂地跳舞:) –