Clipboard Module

剪贴板处理Quill和外部应用程序之间的复制,剪切和粘贴。 存在一组默认值以提供对粘贴内容的合理解释,并具有通过匹配器进一步自定义的能力。

剪贴板通过在后序遍历相应的DOM树来解释粘贴的HTML,从而构建所有子树的Delta表示。在每个后代节点,到目前为止,使用DOM节点和Delta解释调用匹配器函数,允许匹配器返回修改的Delta解释。

为了有效地使用匹配器,Deltas的熟悉和舒适是必要的。

API

addMatcher

将自定义匹配器添加到剪贴板。使用nodeType的匹配器按照添加的顺序首先被调用,然后是使用CSSselector的匹配器,也按照添加的顺序。 nodeType可以是Node.ELEMENT_NODENode.TEXT_NODE

Methods

  1. addMatcher(selector: String, (node: Node, delta: Delta) => Delta)
  2. addMatcher(nodeType: Number, (node: Node, delta: Delta) => Delta)

Examples

  1. quill.clipboard.addMatcher(Node.TEXT_NODE, function(node, delta) {
  2. return new Delta().insert(node.data);
  3. });
  4. // Interpret a <b> tag as bold
  5. quill.clipboard.addMatcher('B', function(node, delta) {
  6. return delta.compose(new Delta().retain(delta.length(), { bold: true }));
  7. });

dangerouslyPasteHTML

将HTML代码段表示的内容插入到给定索引的编辑器中。该代码段由剪贴板匹配器解释,它可能不会生成准确的输入HTML。如果没有提供插入索引,则会覆盖整个编辑器内容。可以是“user”“api”“silent”

不正确的HTML处理可能导致跨站点脚本(XSS)和无法正确清理,这是众所周知的容易出错和导致Web漏洞的主要原因。此方法遵循React的示例,并且恰当地命名以确保开发人员已采取必要的预防措施。

Methods

  1. dangerouslyPasteHTML(html: String, source: String = 'api')
  2. dangerouslyPasteHTML(index: Number, html: String, source: String = 'api')

Examples

  1. quill.setText('Hello!');
  2. quill.clipboard.dangerouslyPasteHTML(5, '&nbsp;<b>World</b>');
  3. // Editor is now '<p>Hello&nbsp;<strong>World</strong>!</p>';

Configuration

matchers

可以将一系列匹配器传递到Clipboard的配置选项中。 这些将在Quill自己的默认匹配器后附加。

  1. var quill = new Quill('#editor', {
  2. modules: {
  3. clipboard: {
  4. matchers: [
  5. ['B', customMatcherA],
  6. [Node.TEXT_NODE, customMatcherB]
  7. ]
  8. }
  9. }
  10. });