在光标处获得增量(无选择)而不分割它

时间:2017-01-09 16:03:01

标签: quill

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

尝试使用

获取delta
editor.getContents(range.index, range.length);

返回

  Delta: {
    ops: []
  }

是预期的 - range.length是0。

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

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

1 个答案:

答案 0 :(得分:1)

假设有一个稍微复杂的示例来消除歧义并假设测试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());