窗口管理
概述
cloudWindow 用于管理窗口自身,提供相关api用于管理、获取窗口状态、通信等。
引入使用
import cloudWindow from '@ugreen-nas/core/cloudWindow'窗口通信概念
消息
通过 send / sendTo 发送,对应窗口通过 cloudWindow.listenWindowData 接收。所有消息、事件均可在回调内知晓来源。
注意:使用 send(data, event)、sendTo(winId, data, event) 等形式携带自定义事件名时,事件名不能与框架内置窗口事件名相同(如 load-finish、close、focus 等该文档所列举出的事件),否则 Promise 会被拒绝并抛出错误。
事件
cloudWindow.on('xxx', (data, from) => {
// data:事件数据
// from:数据来源
})事件
使用 cloudWindowMgr.create() 创建的窗口对象具有以下事件。
load-finish
当窗口加载成功时触发。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| url | string | 加载的 URL |
load-error
当窗口加载失败时触发。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| url | string | 加载失败的 URL |
focus
当窗口获得焦点时触发。
说明:该事件无回调数据。
blur
当窗口失去焦点时触发。
说明:该事件无回调数据。
move
当窗口移动到新位置时触发(移动结束)。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| x | number | 窗口 x 坐标 |
| y | number | 窗口 y 坐标 |
| width | number | 窗口宽度 |
| height | number | 窗口高度 |
moving
当窗口正在移动时触发(移动过程中持续触发)。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| x | number | 窗口 x 坐标 |
| y | number | 窗口 y 坐标 |
| width | number | 窗口宽度 |
| height | number | 窗口高度 |
resizing
当窗口正在调整大小时触发(拖拽调整过程中持续触发)。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| x | number | 窗口 x 坐标 |
| y | number | 窗口 y 坐标 |
| width | number | 窗口宽度 |
| height | number | 窗口高度 |
resize
当窗口调整完大小时触发。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| x | number | 窗口 x 坐标 |
| y | number | 窗口 y 坐标 |
| width | number | 窗口宽度 |
| height | number | 窗口高度 |
maximize
当窗口最大化时触发。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| x | number | 窗口 x 坐标 |
| y | number | 窗口 y 坐标 |
| width | number | 窗口宽度 |
| height | number | 窗口高度 |
un-maximize
当窗口退出最大化时触发。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| x | number | 窗口 x 坐标 |
| y | number | 窗口 y 坐标 |
| width | number | 窗口宽度 |
| height | number | 窗口高度 |
minimize
当窗口最小化时触发。
说明:该事件无回调数据。
restore
当窗口从最小化状态恢复时触发。
说明:该事件无回调数据。
close
窗口关闭后触发,无法阻止。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | { fake: boolean } | fake === true 表示假关闭(隐藏),false 表示真正关闭/销毁 |
before-close
窗口关闭前触发,支持 preventDefault() 阻止关闭。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| e | Event | 原生事件对象,调用 e.preventDefault() 可阻止关闭 |
hostChange
当请求的 BaseUrl 发生改变时触发(如设备地址切换)。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | any | 变更相关信息(如新 URL 等) |
always-on-top-changed
窗口的置顶状态变更时触发。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| value | boolean | 当前置顶状态 |
mouse-enter
鼠标移入窗口时触发。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| x | number | 窗口 x 坐标 |
| y | number | 窗口 y 坐标 |
| width | number | 窗口宽度 |
| height | number | 窗口高度 |
| top | boolean | 窗口是否置顶 |
mouse-leave
鼠标移出窗口时触发。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| x | number | 窗口 x 坐标 |
| y | number | 窗口 y 坐标 |
| width | number | 窗口宽度 |
| height | number | 窗口高度 |
| top | boolean | 窗口是否置顶 |
before-help
点击顶部帮助按钮时触发,支持 preventDefault 阻止默认行为。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| e | BeforeHelpEvent | CustomEvent;e.detail.message 为帮助链接 URL,e.detail.version 为版本号(可能为 null) |
| url | string | undefined | 帮助链接 URL(与 e.detail.message 一致场景下的便捷参数,可省略) |
before-show
当窗口在保活模式下被激活(显示前)时触发。
说明:该事件无回调数据。
show
当窗口被显示时触发(如从隐藏恢复、或配置 show 变为 true)。
说明:该事件无回调数据。
hide
当窗口被隐藏时触发(如调用隐藏或配置 show 变为 false)。
说明:该事件无回调数据。
will-show
当窗口从隐藏变为显示前触发(宿主侧 cloudWindowMgr.show() 在将 config.show 置为 true 之前,会经同步事件通道派发该事件)。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| e | Event | 可在回调中调用 preventDefault() 阻止本次显示;若被阻止,窗口保持隐藏 |
message
当其他窗口通过 sendTo 或桌面通过 send 发送消息时触发。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | any | 消息体 |
| from | string | 发送方窗口标识或来源 |
wsData
通过桌面 WebSocket 下行触发的窗口内事件。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | object | WebSocket 数据包 |
后端标准数据结构(示例):
{
"app_id": "com.xxxx",
"data": {
"body": {},
"event": "xxxx"
},
"role": "",
"type": "app-event"
}拖拽事件
拖拽事件基于 HTML5 Drag and Drop API,支持以下场景:
- 从本地拖拽文件到窗口
- 从窗口内拖拽元素到其他窗口
- 从浏览器拖拽内容到窗口
- 跨窗口拖拽数据
事件触发顺序
正常拖拽流程:
dragEnter → dragOver(持续触发)→ drop/dragEnd → dragLeave跨窗口拖拽:
窗口 A: dragEnter → dragOver → dragLeave
窗口 B: dragEnter → dragOver → drop/dragEnd → dragLeavedragEnter
当拖拽进入窗口时触发。
触发时机:
- 从外部拖拽文件/内容进入窗口区域
- 从其他窗口拖拽进入当前窗口
- 从当前窗口内的子元素拖拽到父元素
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | DragData | any | undefined | 拖拽数据 |
数据来源
- 浏览器 DataTransfer 数据 — 无上述自定义数据时,返回标准
DragData对象 2空拖拽 — 既没有自定义数据,dataTransfer.types也为空时,返回undefined
DragData 对象结构:
interface DragData {
files?: File[] // 拖拽的文件列表(本地文件)
items?: DataTransferItemList // DataTransfer items(支持文件夹拖拽)
types?: string[] // 数据类型列表,如 ['Files', 'text/plain']
effectAllowed?: string // 允许的拖拽效果,如 'copy'、'move'
dropEffect?: string // 当前拖拽效果
text?: string // 文本数据(如果有)
[key: string]: any // 其他自定义字段
}说明:
files:仅包含文件列表,不包含文件夹内的文件items:提供更底层的 API,可通过webkitGetAsEntry()递归读取文件夹结构
示例:
cloudWindow.on('dragEnter', (data) => {
if (!data) {
console.log('空拖拽')
return
}
// 情况1:自定义数据(任意结构)
if (typeof data === 'object' && !data.types) {
console.log('自定义数据:', data)
}
// 情况2:标准 DragData
if (data.files) {
console.log('拖入文件:', data.files)
}
if (data.text) {
console.log('拖入文本:', data.text)
}
})dragOver
当拖拽在窗口上移动时触发(持续触发)。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | DragData | any | undefined | 拖拽数据,结构同 dragEnter |
dragEnd
当拖拽在窗口上释放(drop)时触发。
回调参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | DragData | any | undefined | 拖拽数据,结构同 dragEnter |
触发时机:
- 在窗口内释放拖拽(松开鼠标)
- 在窗口的空白区域释放(未被子元素的 drop 事件拦截)
说明:如果子元素调用了 e.stopPropagation(),dragEnd 不会触发;dragEnd 是冒泡阶段的兜底处理。
示例:
cloudWindow.on('dragEnd', (data) => {
if (data?.files) {
console.log('接收文件:', data.files)
} else if (data) {
console.log('接收自定义数据:', data)
}
})dragLeave
当拖拽离开窗口时触发。
说明:使用计数器机制,避免子元素边界误触发。该事件无回调数据。
拖拽使用场景
场景 1:跨窗口拖拽自定义数据
发送方:在 dragstart 中通过 dataTransfer(如 setData / effectAllowed)写入业务数据,或按你们工程对拖拽管线的封装处理。
function startDrag(e: DragEvent) {
if (!e.dataTransfer) return
e.dataTransfer.setData('text/plain', JSON.stringify({ id: 123, name: 'Item from test2' }))
e.dataTransfer.effectAllowed = 'copy'
}接收方(若发送方写入的是 text/plain 中的 JSON,可从 data.text 解析):
cloudWindow.on('dragEnd', (data) => {
if (data?.text) {
try {
const payload = JSON.parse(data.text)
console.log('接收到跨窗口数据:', payload)
} catch {
/* 非 JSON 时按纯文本处理 */
}
}
})场景 2:自定义拖放区域
如果页面中有特定的拖放区域(如上传框),可以使用原生 HTML5 事件:
<template>
<div
class="drop-zone"
@dragenter="handleDragEnter"
@dragleave="handleDragLeave"
@dragover.prevent="handleDragOver"
@drop.prevent.stop="handleDrop"
>
拖放文件到这里
</div>
</template>
<script>
export default {
methods: {
handleDrop(e) {
// 阻止事件冒泡,防止触发 cloudWindow 的 dragEnd
e.stopPropagation()
const files = e.dataTransfer.files
console.log('Drop zone 接收文件:', files)
}
}
}
</script>说明:自定义区域必须调用 e.preventDefault() 和 e.stopPropagation(),stopPropagation() 会阻止事件冒泡到 cloudWindow 的 dragEnd。
拖拽注意事项
拖拽数据可能是以下任意一种:
undefined— 空拖拽或无效拖拽DragData对象 — 标准浏览器拖拽数据- 任意自定义对象 — 内部拖拽管线提供的自定义载荷(若存在)
建议:
cloudWindow.on('dragEnd', (data) => {
if (!data) {
console.log('无效拖拽')
return
}
if (data.files) {
// 处理文件
} else if (data.id) {
// 处理自定义数据
}
})静态属性
cloudWindow.winId
当前窗口的唯一 ID(只读)。
类型:string
方法
子窗口
createSubWin()
创建子窗口,参数定义同参见 窗口配置说明。
仅当显式传入 belowGroup: null 时按非从属窗口处理(并可在此分支下继承图标);否则会将 belowGroup、parent 设为当前窗口 winId,作为子窗口创建。
返回值:Promise<string>,解析为子窗口的 options.name
窗口尺寸与位置
getSize()
获取当前窗口大小。
参数:无
返回值:Promise<{ width: number; height: number }>
setSize()
设置当前窗口的宽高。如果窗口是最大化状态,将取消最大化。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| width | number | 是 | 窗口宽度 |
| height | number | 是 | 窗口高度 |
返回值:Promise<void>
getSizeInfo()
获取窗口的完整尺寸信息。
参数:无
返回值:Promise<SizeInfo>
interface SizeInfo {
x: number // 窗口 x 坐标
y: number // 窗口 y 坐标
width: number // 窗口宽度
height: number // 窗口高度
maxHeight: number
maxWidth: number
minHeight: number
minWidth: number
radius: number // 圆角大小
}setMinSize()
设置当前窗口的最小宽高。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| width | number | 是 | 最小宽度 |
| height | number | 是 | 最小高度 |
返回值:Promise<void>
setMaximumSize()
设置窗口的最大尺寸。设置后,窗口最大化时会遵循此尺寸限制,而不是占满整个屏幕。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| width | number | 是 | 最大宽度,设置为 0 或负数表示无限制 |
| height | number | 是 | 最大高度,设置为 0 或负数表示无限制 |
返回值:Promise<void>
getPosition()
获取窗口位置。
参数:无
返回值:Promise<{ x: number; y: number }>
setPosition()
设置窗口位置。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| x | number | 是 | x 坐标 |
| y | number | 是 | y 坐标 |
返回值:Promise<void>
center()
居中定位窗口。
参数:无
返回值:Promise<void>
getRelativePos()
获取相对整个系统的坐标(基于传入的 pageX、pageY 转换)。
参数:
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| event | object | 是 | — | 包含 pageX、pageY 的事件对象 |
| offset | { x: number; y: number } | 否 | { x: 0, y: 0 } | 偏移量 |
| reserve | boolean | 否 | false | 反转模式 |
返回值:Promise<{ pageX: number; pageY: number }>
窗口状态
maximize()
设置当前窗口为最大化。
参数:无
返回值:Promise<void>
unmaximize()
取消当前窗口最大化。
参数:无
返回值:Promise<void>
isMaximized()
查询当前窗口是否最大化。
参数:无
返回值:Promise<boolean>
minimize()
最小化当前窗口。
参数:无
返回值:Promise<void>
restore()
将窗口置于顶层并取消最小化与标题栏「还原」按钮触发的窗口内逻辑(在最大化/还原之间切换)不是同一套 API。
参数:无
返回值:Promise<void>
isMinimized()
查询当前窗口是否最小化。
参数:无
返回值:Promise<boolean>
show()
显示当前窗口(将窗口配置 show 置为 true)。窗口从隐藏变为显示时会触发 show 事件。
参数:无
返回值:Promise<void>
hide()
隐藏当前窗口(将窗口配置 show 置为 false)。窗口从显示变为隐藏时会触发 hide 事件;窗口仍在内存中,可再次调用 show() 显示。
参数:无
返回值:Promise<void>
窗口控制
close()
关闭当前窗口,会触发 before-close 事件(可阻止)和 close 事件。
参数:无
返回值:void
loadUrl()
设置当前窗口的 URL。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 要加载的 URL |
返回值:Promise<void>
damaged()
标记窗口为已损坏,强制清除窗口缓存。
参数:无
返回值:Promise<void>
说明:
- 设置
cacheTime为0,设置hideOnClose为false - 适用于窗口内容出现异常需要重新加载时
示例:
// 当窗口出现严重错误时,标记为损坏
cloudWindow.damaged()
cloudWindow.close() // 关闭后会彻底销毁,不会缓存setMovable()
设置窗口是否允许拖拽移动。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| state | boolean | 是 | 是否允许拖拽 |
返回值:Promise<void>
setResizable()
设置当前窗口是否允许拖拽改变大小。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| resizable | boolean | 是 | 是否允许调整大小 |
返回值:Promise<void>
setMinimizable()
设置当前窗口是否允许最小化。
参数:
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| open | boolean | 是 | — | 是否允许最小化 |
| showIcon | boolean | 否 | false | 不允许最小化时是否仍显示最小化按钮图标 |
返回值:Promise<void>
setMaximizable()
设置当前窗口是否允许最大化。
参数:
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| open | boolean | 是 | — | 是否允许最大化 |
| showIcon | boolean | 否 | false | 不允许最大化时是否仍显示最大化按钮图标 |
返回值:Promise<void>
setClosable()
设置当前窗口是否允许关闭。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| closeable | boolean | 是 | 是否允许关闭窗口 |
返回值:Promise<void>
setAlwaysOnTop()
设置窗口是否置顶。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| val | boolean | 是 | 是否置顶 |
返回值:Promise<void>
isAlwaysOnTop()
查询窗口是否置顶。
参数:无
返回值:Promise<boolean>
focus()
设置窗口聚焦。
参数:无
返回值:Promise<void>
blur()
设置窗口失焦。
参数:无
返回值:Promise<void>
isFocus()
查询窗口是否聚焦。
参数:无
返回值:Promise<boolean>
窗口外观
getTitle()
获取当前窗口的标题。
参数:无
返回值:Promise<string>
setTitle()
设置当前窗口的标题栏,会同步改变任务栏标题和窗口标题。桌面端无法调用。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| title | string | 是 | 窗口标题 |
返回值:Promise<void>
getIcon()
获取窗口的图标地址(即 create 时传入的参数)。
参数:无
返回值:Promise<string | null>
setBackgroundColor()
设置窗口背景颜色。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| color | string | 是 | 背景颜色,支持 CSS 颜色值,设置为 transparent 表示透明 |
返回值:Promise<void>
setShadowColor()
设置窗口阴影。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| color | string | boolean | 是 | 自定义阴影字符串;true 使用默认阴影;false 无阴影 |
返回值:Promise<void>
setRadius()
设置窗口圆角大小。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| radius | number | 是 | 圆角大小(像素) |
返回值:Promise<void>
setStyle()
设置窗口元素的自定义样式。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| obj | Record<string, string | number> | 是 | 样式对象,数值会自动添加 px 单位 |
返回值:Promise<void>
说明:以下属性被禁止修改(保护窗口布局):
- 布局相关:
width、height、left、top、bottom、right、position、padding、margin - 层级相关:
z-index - 窗口外观:
background、background-image、box-shadow、border-radius、display
示例:
// 设置窗口边框
await cloudWindow.setStyle({
border: '2px solid #409eff',
borderStyle: 'dashed'
})
// 设置透明度和过渡效果
await cloudWindow.setStyle({
opacity: 0.95,
transition: 'all 0.3s ease'
})registerHeader()
注册自定义窗口操作标题栏元素,可实现拖拽、双击缩放。调用后会强制设置 frame = false,取消注册也不会还原此状态。
参数:
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| handle | HTMLElement | Element | 是 | — | 设置为窗口操作栏的元素 |
| focus | boolean | 否 | false | 强制设置(会取消之前设置的元素) |
返回值:Promise<Function | 0>,一般为卸载拖拽监听的清理函数;在部分场景下可能为 0(表示未注册新的本地拖拽逻辑,与旧版兼容)
setActionPosition()
自定义窗口操作按钮的位置,强制设置 frame = false。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| y | number | 是 | 操作按钮的 Y 轴位置 |
| x | number | 否 | 操作按钮的 X 轴位置,仅 Mac 下有效 |
返回值:Promise<number>,成功时为 1
setActionVisible()
控制窗口顶部操作按钮的显示和隐藏。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| actionRange | Array<'mini' | 'close' | 'restore' | 'help'> | 是 | 需要操作的按钮类型列表 |
| state | boolean | 是 | 显示状态,true 显示,false 隐藏 |
返回值:Promise<void>
示例:
// 隐藏最小化和帮助按钮
await cloudWindow.setActionVisible(['mini', 'help'], false)
// 显示所有按钮
await cloudWindow.setActionVisible(['mini', 'close', 'restore', 'help'], true)setHelpInfo()
更新顶部窗口帮助按钮配置,传入 undefined 为隐藏。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| info | string | undefined | 是 | 帮助信息或链接,undefined 表示隐藏帮助按钮 |
返回值:Promise<void>
消息与事件通信
listenWindowData()
监听窗口的数据,包含 create 时从 data 参数传入的,以及 send 方法发送的。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | (message: any, from: string) => void | 是 | 回调函数,接收消息内容和消息来源 |
返回值:Function,调用返回值可取消当前监听
send()
发送数据到顶层(桌面接收)。
参数:
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| data | any | 是 | — | 要发送的数据 |
| event | string | 否 | '' | 自定义事件名;不得与内置窗口事件名冲突 |
返回值:Promise<void>
sendEvent()
发送事件到顶层(桌面接收)。
参数:
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| event | string | 是 | — | 自定义事件名;不得与内置窗口事件名冲突 |
| data | any | 否 | undefined | 事件数据 |
返回值:Promise<void>
sendTo()
发送数据到指定窗口。对应窗口可使用 on('message', (data, from) => {}) 接收。
参数:
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| winId | string | 是 | — | 目标窗口唯一标识 |
| data | any | 否 | undefined | 要发送的数据 |
| event | string | 否 | '' | 自定义事件名;不得与内置窗口事件名冲突 |
返回值:Promise<void>
sendEventTo()
发送事件到指定窗口。对应窗口可使用 on(event, (data) => {}) 接收。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| winId | string | 是 | 目标窗口唯一标识 |
| event | string | 是 | 自定义事件名;不得与内置窗口事件名冲突 |
| data | any | 否 | 事件数据 |
返回值:Promise<void>
sendEventToGroup()
发送事件给一组窗口(创建时 config.group 相同的)。请合理使用,避免不必要的问题。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| group | string | string[] | 是 | 窗口组名称或名称列表 |
| event | string | 是 | 自定义事件名;不得与内置窗口事件名冲突 |
| data | any | 否 | 事件数据 |
返回值:Promise<number>,实际派发到的窗口数量
sendEventToMyGroup()
发送事件给当前窗口所在的组(创建时 config.group 相同的)。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| event | string | 是 | 自定义事件名;不得与内置窗口事件名冲突 |
| data | any | 否 | 事件数据 |
返回值:Promise<number>,同组内除自身外的窗口数量(即 sendEventTo 调用次数)
useCapacity()
调用桌面开放能力,参见 桌面开放能力调用说明。
参数:
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| capName | string | 是 | — | 应用能力名称,由被调用方决定 |
| data | any | 否 | — | 应用能力调用参数,由被调用方决定 |
| timeout | number | 否 | 0 | 超时时间(ms),0 表示不超时 |
返回值:Promise<any>,能力调用结果
窗口组
getGroup()
获取窗口所属的组。
参数:无
返回值:Promise<string>,无群组时为空字符串 ''
getGroupList()
获取窗口所在组的所有窗口名称(不包含当前窗口)。
参数:无
返回值:Promise<string[]>
getGroupPosition()
获取当前窗口在同 config.group 下的完整成员列表(含自身)中的索引;该列表与 getGroupList() 不同,后者会排除当前窗口。
参数:无
返回值:Promise<number>,无群组或不在列表中为 -1
queryIsExist()
查询指定组中是否存在指定名称的窗口。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| group | string | 是 | 窗口组名称 |
| winName | string | 是 | 窗口名称 |
返回值:Promise<boolean>
示例:
const exists = await cloudWindow.queryIsExist('main-group', 'settings-window')
if (exists) {
console.log('设置窗口已存在')
} else {
///
}