quill - 在不拆分光标的情况下获取光标处的增量(无选择)

标签 quill

这是一个带有属性的增量:

试图获得增量

editor.getContents(range.index, range.length);

返回

  Delta: {
    ops: []
  }

这是预期的 - range.length 是 0。

有没有办法返回整个增量(从左到右)所以它看起来像这样:

Delta: {
   ops: [
    {
      attributes: { test: '123' },
      insert: 'A selection'
    },
    ...
  ]
}

最佳答案

假设一个稍微复杂的例子来消除歧义,并假设 test 123 属性是用一个类 Attributor 实现的,给定文档:

<div class="ql-editor">
  <p><strong>ab</strong><span class="ql-test=123">cd<em>ef</em></span></p>
</div>

我认为您要问的是当用户的光标位于“e”和“f”之间时获取“cdef”文本的 Delta,因此您的范围是 index: 5

这是一个实验性/未记录的 API,但 quill.scroll.path(5) 将为您提供一个数组 [[blockBlot, 0], [inlineBlot, 2], [italicBlot, 1]] 并且在这种情况下你想要的印迹是第二个所以通过将偏移量相加你将得到 2 (0 + 2) 然后你可以调用 quill.getContents(2, blot.length( )).

如果类是唯一的(或者您可以通过其他方式访问 DOM 节点),您还可以:

const Parchment = Quill.import("parchment");
let node = document.querySelector('.ql-test-123');
let blot = Parchment.find(node);
let offset = quill.scroll.offset(blot);

quill.getContents(offset, blot.length());

关于quill - 在不拆分光标的情况下获取光标处的增量(无选择),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41551992/

相关文章:

Quill JS - 不确定如何正确设置初始工具栏选项

javascript - 如何将 html 文件加载到 ngQuill(Quill 编辑器)中?

quill - Quill 中的原子文本印迹

symfony - 无法通过 Symfony 5 表单传递 Quill.js 编辑器内容

javascript - 如何将 Wiris 或 Mathjax 添加到 Quill 编辑器

quill - 文本搜索后如何设置选择?

quill - Quill 编辑器的全屏按钮?

javascript - Quill 在 h1 之后添加了一个不需要的 <br>

vue.js - 我想要 nuxt.js (vue.js) 中的 quilljs

javascript - 如何在 React-quill 中添加自定义字体大小