作者:幸福taishanvv_660 | 来源:互联网 | 2023-09-23 15:33
问题描述
我想自己写一个在线编辑的工具,使用一个大的
作为编辑区域,我使用了如下的代码来完成单行或多行缩进,但是这样使用js插入的文本,并不能使用
来撤销操作,想问下有没有解决的办法,或者我的缩进思路从一开始就错了?
相关代码
- 这是我自己写的一个DEMO,可以直接运行看到结果,大概思路是通过
来判断行首的位置,并在其后插入两个空格作为缩进
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| // Javascript
let text = document.querySelector('textarea');
text.Onkeydown= ()=>{
if(event.key === "Tab"){
event.preventDefault();
let selectiOnStart= text.selectionStart;
let selectiOnEnd= text.selectionEnd;
if(selectionEnd !== selectionStart){
let textValue = text.value;
let strBefore = textValue.slice(0,selectionStart);
let lineStart = strBefore.lastIndexOf('\n') + 1;
text.setRangeText(' ',lineStart,lineStart);
strBetween = textValue.slice(selectionStart,selectionEnd);
text.setRangeText(strBetween.replace('\n','\n '));
}
else{
text.setRangeText(" ");
text.selectionStart += 2;
}
}
} |
如果我描述的不够清楚,这有我写的一篇简书,里面写了我具体实现改功能的过程,希望有大佬能帮帮我
https://www.jianshu.com/p/273...