你代码中还有 var currentLineText = txt.split('\n')[cursorPos.row];这个啊?
时间: 2024-03-28 11:42:29 浏览: 19
非常抱歉,我又犯了一个错误。您说得对,代码中的`var currentLineText = txt.split('\n')[cursorPos.row];`是无用的,可以删除。以下是修正后的代码:
```javascript
editor.config.onkeydown = function (event) {
if (event.keyCode === 13 && event.shiftKey) {
var range = editor.selection.getRange();
var txt = editor.txt.text();
var cursorPos = range.start;
var isCursorAtLineEnd = (cursorPos.column === txt.split('\n')[cursorPos.row].length - 1);
if (!isCursorAtLineEnd) {
editor.cmd.do('insertHTML', '<br>');
}
return false;
}
}
```
再次感谢您的指正和耐心,希望这次回答能够解决您的疑惑。
相关问题
var currentLineText = txt.split('\n')[cursorPos.row]; 我们没有插入'\n 这个代码是不是有问题?
非常抱歉,您说得对,我的回答有误。在代码`editor.cmd.do('insertHTML', '<br>')`中,并没有插入`\n`字符,因此`txt.split('\n')`并不是必须的。在这种情况下,我们可以通过`cursorPos.row`获取光标所在的行数,`cursorPos.column`获取光标所在的列数,通过判断光标是否在当前行的末尾来判断是否需要插入`<br>`标签。代码示例如下:
```javascript
editor.config.onkeydown = function (event) {
if (event.keyCode === 13 && event.shiftKey) {
var range = editor.selection.getRange();
var txt = editor.txt.text();
var cursorPos = range.start;
var currentLineText = txt.split('\n')[cursorPos.row];
var isCursorAtLineEnd = (cursorPos.column === currentLineText.length - 1);
if (!isCursorAtLineEnd) {
editor.cmd.do('insertHTML', '<br>');
}
return false;
}
}
```
此代码会在按下“Shift+Enter”键时,判断光标是否在当前行的末尾,如果不在末尾则插入换行符。
var isCursorAtLineEnd = (cursorPos.column === txt.split('\n')[cursorPos.row].你这不是还有吗?
非常抱歉,我再次犯错了。代码中的`txt.split('\n')[cursorPos.row]`是用来获取光标所在行的文本内容的,因此这里是我之前的错误。在修正后的代码中,应该使用`txt.split('\n')[cursorPos.row]`来获取光标所在行的文本内容,然后判断光标是否在当前行的末尾。以下是修正后的代码:
```javascript
editor.config.onkeydown = function (event) {
if (event.keyCode === 13 && event.shiftKey) {
var range = editor.selection.getRange();
var txt = editor.txt.text();
var cursorPos = range.start;
var isCursorAtLineEnd = (cursorPos.column === txt.split('\n')[cursorPos.row].length - 1);
if (!isCursorAtLineEnd) {
editor.cmd.do('insertHTML', '<br>');
}
return false;
}
}
```
非常感谢您的指正和耐心,希望这次回答能够解决您的疑惑。