DocumentNode
DocumentNode
是根节点。 每个浏览器选项卡只能有一个文档节点,并且它的每个子节点都必须是一个 PageNode
。
大多数插件不需要使用此节点,除非它们正在创建新页面或执行文档范围的操作。 在后一种情况下,建议只读取而不写入,因为用户可能看不到在不同页面上所做的修改。
Document node properties
type
- Readonly:
true
- Type:
BOOLEAN_OPERATION
节点类型,对于 DocumentNode
节点来说,其值为字符串 DOCUMENT
。
children
- Readonly:
true
- Type:
ReadonlyArray<PageNode>
当前节点的直接子节点。
appendChild
- Type:
appendChild(child: PageNode): void
将给定的节点 child
添加为当前节点的直接子节点。
insertChild
- Type:
insertChild(index: number, child: PageNode): void
在指定的位置 index
处插入子节点 child
。假设一个组有三个子节点 A、B、C,现在调用 insertChild 方法将插入图层节点 D:
insertChild(0, D)
,子节点顺序为:D
、A、B、C。insertChild(1, D)
,子节点顺序为:A、D
、B、C。insertChild(2, D)
,子节点顺序为:A、B、D
、C。insertChild(3, D)
,子节点顺序为:A、B、C、D
。
findChildren
- Type:
findChildren(callback?: (node: PageNode) => boolean): PageNode[]
与 findAll
类似,不同之处在于,findChildren
仅会在当前节点的直接子节点(不包括子节点的子节点)中进行查找。
findChild
- Type:
findChild(callback: (node: PageNode) => boolean): PageNode | null
与 findOne
类似,不同之处在于,findChild
仅会在当前节点的直接子节点(不包括子节点的子节点)中进行查找。
findAll
- Type:
findAll(callback?: (node: PageNode) => boolean): PageNode[]
从当前节点开始查找整个子树,对每个节点调用 callback
函数,并返回所有对于 callback
函数的返回值为 true
的节点。
findOne
- Type:
findOne(callback: (node: PageNode) => boolean): PageNode | null
从当前节点开始查找整个节点树,对每个节点调用 callback
函数,并返回第一个对于 callback
函数的返回值为 true
的节点。
findAllWithCriteria
- Type:
findAllWithCriteria<T extends NodeType[]>(criteria: { types: T }): Array<{ type: T[number] } & (PageNode | SceneNode)>
搜索整个子树(此节点的子节点、其子节点的子节点等)。返回满足条件中定义的任何类型的所有节点。
Base node properties
id
- Readonly:
true
- Type:
string
当前节点的 ID。
parent
- Readonly:
true
- Type:
(BaseNode & ChildrenMixin) | null
获取当前节点的父节点。
index
- Readonly:
true
- Type: number
获取当前节点在同一层级下的顺序索引。
name
- Type:
string
读取或设置组件的名字,即图层面板中所展示的图层名称。
removed
- Readonly:
true
- Type:
boolean
如果节点被移除了,则返回 true
。如果插件保持打开一段时间并存储对节点的引用,您应该防御性地编写代码并检查节点是否未被用户删除。
remove
- Type:
remove():void
从文档中删除此节点及其所有子节点。
toString
- Type:
string
返回节点的字符串表示形式。
setRelaunchData
- Type:
data: {[command: string]: string}): void
在节点上设置状态以在选择节点时显示按钮和描述。
getRelaunchData
- Type:
getRelaunchData(): { [command: string]: string }
检索存储在此节点上的重新启动数据,使用 setRelaunchData
。
getPluginData
- Type:
getPluginData(key: string): string
获取节点上存储自定义信息,对您的插件来说是私有的。如果要获取字符串以外的值类型,请先通过 JSON.parse
将其解码。
setPluginData
- Type:
setPluginData(key: string, value: string): void
允许您在任何节点上存储自定义信息,对您的插件来说是私有的。如果要存储字符串以外的值类型,请先通过 JSON.stringify
将其编码。
getPluginDataKeys
- Type:
getPluginDataKeys(): string[]
获取当前插件存储信息的所有键名。
getSharedPluginData
- Type:
getSharedPluginData(namespace: string, key: string): string
获取存储在特定命名空间上的共享数据。
setSharedPluginData
- Type:
setSharedPluginData(namespace: string, key: string, value: string): void
这使您可以在任何节点上存储自定义信息。您可以稍后通过使用相同的命名空间和键调用 getSharedPluginData 来检索它。要查找存储在特定命名空间中的节点上的所有数据,请使用 getSharpedPluginDataKeys
。
您使用此 API 编写的任何数据都可以被任何插件读取。目的是允许插件相互操作。如果您不希望其他插件能够读取您的数据,请改用 setPluginData
。
您还必须提供命名空间参数以避免与其他插件的键冲突。此参数是强制性的,以防止多个插件使用通用键名(如数据)并相互覆盖。我们建议传递一个标识您的插件的值。可以将此命名空间提供给其他插件的作者,以便他们可以从您的插件中读取数据。
namespace 用于标识您的插件并避免与其他插件发生键冲突的唯一字符串。命名空间必须至少包含 3 个字母数字字符。
getSharedPluginDataKeys
- Type:
getSharedPluginDataKeys(namespace: string): string[]
查找存储在特定命名空间中的节点上的所有数据的键名。