1
我有一個相當簡單的函數,它在每個keyup上觸發。它在一定條件下(T句子很長)標記TinyMCE的輸入文本,然後在TinyMCE編輯器中顯示突出顯示的文本。JavaScript:如何處理增長數組中的內存?
這看起來就像一個魅力乍一看。但隨着文本的增長,數組的功能需要越來越長的時間來執行。
是否有一種很棒的方式來檢測輸入光標在文本中的位置,然後僅分析周圍的單詞(可能是當前句子的示例)並重用其餘的文本?
代碼如下所示。
HTML
<div id="myTextArea" contenteditable="true">
Just put lorem ipsum here.
</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 editor = tinyMCE.activeEditor;
// Store the selection
var bookmark = editor.selection.getBookmark();
// Remove previous marks and add new ones
$(editor.getBody()).unmark().mark(matchWarning, {
acrossElements: true,
"separateWordSearch": false,
});
// Restore the selection
editor.selection.moveToBookmark(bookmark);
}
如何在這個提高速度的任何建議,歡迎:)
不錯。花了我一段時間來弄清楚這個debouncer是如何工作的。但現在它像一個魅力:)更流暢。 我不想只在(。!?等等)上運行,因爲人們經常停止在句子中間輸入。我想盡快驗證文本:)去抖器是以高效方式達到此目的的完美方式。 –
稍微澄清一下@Jorge 當我使用debouncer功能時,我的Chrome檢查工具會在我嘗試檢查時不停地停頓。我是以錯誤的方式使用它還是這是可以預料的? –