contenteditable 中的 JavaScript 缩进文本

标签 javascript execcommand

我正在尝试在 contenteditable div 中缩进和减少缩进。缩进工作正常,但 outdent execCommand 不起作用。我有最后一个键缓冲区,适用于其他键盘快捷键,但不适用于这个。感谢您的帮助。

        if (keyCode == 9) { /* indent */
            event.preventDefault();
            document.execCommand("indent");
        }
        if(keyCode == 9 && lastkey == 16){
            event.preventDefault();
            document.execCommand("outdent");
        }

最佳答案

您应该使用 if/else if 以便仅运行这两个命令中的一个,并且将 lastKey 检查作为系列

我不确定您的 lastKey 变量是如何工作的,因此我添加了 event.shiftKey 进行演示

$(".myClass").on("keydown", function(event) {
  if (event.keyCode == 9 && event.shiftKey /* lastKey */ ) {
    event.preventDefault();
    document.execCommand("outdent");
  } else if (event.keyCode == 9) { /* indent */
    event.preventDefault();
    document.execCommand("indent");
  }
});
.myClass {
  display: block;
  height: 300px;
  width: 500px;
  border: 1px solid #bfbfbf;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="myClass" contenteditable="true"></div>

<小时/>

关于contenteditable 中的 JavaScript 缩进文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59310818/

相关文章:

javascript - 在 JavaScript 中计算文件的 SHA-256 哈希值和 B64

javascript - 您可以在文档以外的元素上运行 execcommand 吗?

javascript - 如何使用 javascript/jquery/jquerymobile(三 Angular 形按钮,关闭键盘按钮)检测 android 软导航

javascript - 查询共享相同值的 JSON 数据

javascript - 使用嵌套的 forEach 循环将对象推送到数组

execCommand 中 'paste as plain text` 的 Javascript 技巧

execCommand 中 'paste as plain text` 的 Javascript 技巧

javascript - Chrome execCommand ('insertHTML' ) 行为

javascript - 保存选定的文本范围以备后用 不起作用

javascript - 上传的 javascript 文件中出现 IBM Worklight 5.0.5 方法错误