var codeAreas = document.querySelectorAll('code.block-editor-rich-text__editable');
if (codeAreas) {
for (area of codeAreas) {
area.addEventListener('keydown', (e) => {
var TABKEY = 9;
if (e.keyCode == TABKEY) {
if (e.preventDefault) {
e.preventDefault();
}
var text = "\t";
var selection = document.getSelection();
var range = selection.getRangeAt(0);
var startPos = range.startOffset;
var endPos = range.endOffset;
area.innerText = area.innerText.substring(0, startPos)
+ text
+ area.innerText.substring(endPos, area.innerText.length);
range = document.createRange();
range.setStart(area.firstChild, endPos + text.length);
selection.removeAllRanges();
selection.addRange(range);
return false;
}
}
, false);
}
}
var codeAreas = document.querySelectorAll('code.block-editor-rich-text__editable');
if (codeAreas) {
for (area of codeAreas) {
area.addEventListener('keydown', (e) => {
...
型 我们检查一下是不是账单
...
var TABKEY = 9;
if(e.keyCode == TABKEY) {
...
型 如果是,首先我们阻止keydown事件的默认行为(选择下一个元素)
...
if (e.preventDefault) {
e.preventDefault();
}
...
...
var text = " ";
var selection = document.getSelection();
var range = selection.getRangeAt(0);
var startPos = range.startOffset;
var endPos = range.endOffset;
...
2条答案
按热度按时间avkwfej41#
尝试将以下内容添加到脚本标记中的页脚之前(根据正确的过程将其入队):
字符串
我将尝试分解每个部分的功能。
首先,我们当然会找到任何可编辑的代码标记(如果存在),并添加一个keydown事件。
型
我们检查一下是不是账单
型
如果是,首先我们阻止keydown事件的默认行为(选择下一个元素)
型
然后设置我们要插入的文本-在本例中是一个制表符,但也可以是四个空格或其他任何内容-并获取当前选择的位置。如果没有突出显示任何内容,则选择范围的起点和终点将相同
型
现在我们在光标处插入文本,
型
然后我们重置我们的选择到插入文本的结尾
型
然后我们返回false以防万一,这样事件肯定不会触发其他处理程序
jogvjijk2#
我已经解决了这个问题,通过安装“Enlighter -可定制的语法高亮”插件。我的代码现在根据需要进行了很好的格式化。