识别 Quill.JS 中的新行
Recognize new line in Quill.JS
我想让 QuillJS 识别新行,但我不知道如何...
例如:我有 4 行,想在每行的前面和末尾都加上一个“*”,空行除外。
示例:
* line1 *
empty
* line3 *
* line4 *
提前致谢! :-)
编辑:
这是一个片段/我的代码的当前状态
var boldButton = document.querySelector('.ql-bold');
boldButton.addEventListener('click', function() {
var sel = quill.getSelection();
if (sel) {
quill.insertText(sel.index, "*");
quill.insertText(sel.index+sel.length+1, "*");
quill.setSelection({index:sel.index+1, length:sel.length});
}
})
这是一个粗略的解决方案,但有效。
它寻找换行符号(在我的例子中是 \n
)并计算行长:
boldButton.addEventListener('click', function() {
var sel = quill.getSelection();
var text = quill.getText(sel.index, sel.length);
if (sel) {
// GET ALL LINE LENGTH (MAY ADAPT FOR LINES WITH ONLY SPACES/TABS/...)
var linesLengths = text.split("\n").map(function(line){
return line.length;
});
var startPosition = sel.index;
for(var idx = 0; idx < linesLengths.length; idx++){
var currentLineLength = linesLengths[idx];
// ONLY MARK LINES WITH SOME CONTENT
if(currentLineLength > 0){
quill.insertText(startPosition, "*");
quill.insertText(startPosition + currentLineLength + 1, "*");
// PREPARE NEW STARTPOSITION
startPosition += currentLineLength + 2;
}
// COUNT THE NEWLINE SYMBOL
startPosition++;
}
}
});
可以优化,但我留下这个是为了reader。
我想让 QuillJS 识别新行,但我不知道如何...
例如:我有 4 行,想在每行的前面和末尾都加上一个“*”,空行除外。
示例:
* line1 *
empty
* line3 *
* line4 *
提前致谢! :-)
编辑: 这是一个片段/我的代码的当前状态
var boldButton = document.querySelector('.ql-bold');
boldButton.addEventListener('click', function() {
var sel = quill.getSelection();
if (sel) {
quill.insertText(sel.index, "*");
quill.insertText(sel.index+sel.length+1, "*");
quill.setSelection({index:sel.index+1, length:sel.length});
}
})
这是一个粗略的解决方案,但有效。
它寻找换行符号(在我的例子中是 \n
)并计算行长:
boldButton.addEventListener('click', function() {
var sel = quill.getSelection();
var text = quill.getText(sel.index, sel.length);
if (sel) {
// GET ALL LINE LENGTH (MAY ADAPT FOR LINES WITH ONLY SPACES/TABS/...)
var linesLengths = text.split("\n").map(function(line){
return line.length;
});
var startPosition = sel.index;
for(var idx = 0; idx < linesLengths.length; idx++){
var currentLineLength = linesLengths[idx];
// ONLY MARK LINES WITH SOME CONTENT
if(currentLineLength > 0){
quill.insertText(startPosition, "*");
quill.insertText(startPosition + currentLineLength + 1, "*");
// PREPARE NEW STARTPOSITION
startPosition += currentLineLength + 2;
}
// COUNT THE NEWLINE SYMBOL
startPosition++;
}
}
});
可以优化,但我留下这个是为了reader。