带有子印迹的鹅毛线包裹印迹值

时间:2020-04-01 23:30:42

标签: javascript typescript quill

我想默认所有文本使用Arial字体样式和12px字体大小。

如果我将这些设置为工具栏的默认设置,则工具栏的UI不会更改为表示您所使用的颜色的颜色(例如,如果我将光标放在样式为15px的某些文本中,日内瓦,字体和大小选择器的用户界面将为蓝色,但是如果我将用户界面默认设置为15和日内瓦,那么每当我将光标放置在以这种方式设置的文本中时,它都将切换为该界面,但用户界面不会具有突出显示的颜色。

要解决此问题,我只是选择不设置默认值。除了我从数据库中读取一些旧值时,这都很好用。 这些旧值看起来像这样,

<p> This is legacy text </p>

并且应默认为Arial字体样式,大小为12px。

因此,理想情况下,我希望Quill将其转换为:

<p>
  <span class="ql-font-arial" style="font-size: 12px;">This is legacy text.</span>
</p>

但是创建污点时,我无法让Quill接受子节点。如果我附加一个孩子,则会对其进行优化,因为该孩子将没有任何内容。如果我添加一个子节点并返回一个子节点,则Quill不会确认父节点,并且父节点不会出现在样式中(并且将所有内容放在同一行上,因为现在它只是一个经过优化的巨型span标记。)< / p>

是否有办法使印迹使用格式本身生一个孩子并将数据粘贴到孩子中? 这就是我现在用来捕获

标签并保持其可能具有的所有对齐格式的方式。 但是我不知道如何将其默认设置为将数据包装在子<span>标记中。

const BlockBlot = Quill.import('blots/block');

export class PBlot extends BlockBlot {
  static create(data: { alignment: string }) {
    let node: Element = document.createElement('P');
    if (data && data.alignment) {
      node.setAttribute('class', `ql-align-${data.alignment.toLowerCase()}`);
    }
    let sNode = document.createElement('SPAN');
    node.appendChild(sNode);
    //return sNode;
    return node;
  }

  static formats(node: Element) {
    return { alignment: node.getAttribute('align') || undefined };
  }
}
PBlot.tagName = 'P';
PBlot.blotName = 'block';

0 个答案:

没有答案