Clipboard 模块包

lexical
Created 10/3/2023
Updated 10/3/2023

Clipboard 模块包

Lexical 提供了一个 @lexical/clipboard 模块包,其中有一些关于剪贴板的实用方法。

参考
注意

其中有一些方法的名称以 $ 符号开头,它们大部分是用于修改编辑器状态 EditorState 的,一般只能在 editor.update(callbackFn) 的回调函数 callbackFn 中实用

  • $generateJSONFromSelectedNodes(editor, selection) 从选区 selection 中获取节点,并将它们序列化为 JSON(对象)格式,并构成一个数组
    但最后返回的是一个对象(除了节点信息,还包含编辑器信息),它包含两个属性
    • 属性 namespace:一个字符串,表示编辑器的命名空间
    • 属性 nodes:一个数组,包含一系列序列化为 JSON 格式的节点
  • $generateNodesFromSerializedNodes(serializedNodes) 基于给定的序列化为 JSON 格式的节点(数组) serializedNodes(反序列化)生成一系列节点对象
  • $getHtmlContent(editor) 基于编辑器当前的选区生成 HTML 字符串
    提示

    主要调用不同类型的节点的 exportDOM 方法来生成 HTML 内容

  • $getLexicalContent(editor) 基于编辑器当前的选区生成 JSON 字符串
    提示

    主要调用不同类型的节点的 exportJSON 方法来生成 JSON 字符串

  • $insertDataTransferForPlainText(dataTransfer, selection) 通过拖拽释放的方式将纯文本内容插入到选区/光标 selection 位置。参数 dataTransfer 是一个 DataTransfer 对象,它表示/容纳拖动并放下 drag and drop 过程中的数据(其 mime-types 格式是 text/plain 纯文本或 text/uri-list URI 列表)
  • $insertDataTransferForRichText(dataTransfer, selection, editor) 通过拖拽释放的方式将富文本内容插入到选区/光标 selection 位置。参数 dataTransfer 是一个 DataTransfer 对象,它表示/容纳拖动并放下 drag and drop 过程中的数据(其 mime-types 格式是 application/x-lexical-editor 编辑器应用所生成的内容 JSON 格式、text/html HTML 内容、text/plain 纯文本、text/uri-list URI 列表)
  • $insertGeneratedNodes(editor, nodes, selection) 将给定的一系列节点 nodes(数组)插入到选区/光标 selection 位置。
    提示

    使用以上方法插入节点时,会针对不同的节点类型采用不同的处理方式(特别是插入表格 ❓ )

    也可以使用 Lexical 核心模块所导出的更通用的方法 $insertNodes(nodes, selectStart?) 插入节点

  • copyToClipboard(editor, event) 将当前选区的内容复制到剪切板中。参数 event 是浏览器原生的 ClipboardEvent 剪切板事件,用于将选区内容添加到剪切板中(内容的格式可以是 text/plain 纯文本、text/html HTML 内容、application/x-lexical-editor 编辑器应用所生成的内容 JSON 格式)
    返回一个 Promise 所以需要异步编程来使用该方法

Copyright © 2025 Ben

Theme BlogiNote

Icons from Icônes