Appearance
窗口
提供窗口创建、窗口控制、窗口间通信以及插件应用窗口交互等 API。
utools.createBrowserWindow(url[, options][, callback])
创建一个自定义窗口
自定义窗口的定义、窗口通信及使用示例,请参考:自定义窗口
类型定义
ts
function createBrowserWindow(
url: string,
options?: BrowserWindowConstructorOptions,
callback?: Function
): BrowserWindow;参数
url:窗口加载的 HTML 文件路径,相对于插件应用根目录。options:自定义窗口选项。callback:自定义窗口页面加载完成后调用,常用于显示窗口、设置窗口状态或向自定义窗口发送消息。
返回
- 返回由 uTools 管理的
BrowserWindow窗口实例。其大部分属性和方法与 ElectronBrowserWindow保持一致,但不支持BrowserWindow和webContents的实例事件监听。
BrowserWindowConstructorOptions 类型定义
ts
interface BrowserWindowConstructorOptions {
/**
* 是否显示窗口
* 默认为 true
*/
show?: boolean;
/**
* 窗口标题
*/
title?: string;
/**
* 窗口宽度
*/
width?: number;
/**
* 窗口高度
*/
height?: number;
/**
* 窗口最小宽度
*/
minWidth?: number;
/**
* 窗口最小高度
*/
minHeight?: number;
/**
* 窗口最大宽度
*/
maxWidth?: number;
/**
* 窗口最大高度
*/
maxHeight?: number;
/**
* 窗口初始横坐标
*/
x?: number;
/**
* 窗口初始纵坐标
*/
y?: number;
/**
* 是否将窗口显示在屏幕中央
* 默认为 false
*/
center?: boolean;
/**
* 是否允许调整窗口大小
* 默认为 true
*/
resizable?: boolean;
/**
* 是否允许移动窗口
* 默认为 true
*/
movable?: boolean;
/**
* 是否允许最大化窗口
* 默认为 true
*/
maximizable?: boolean;
/**
* 是否允许最小化窗口
* 默认为 true
*/
minimizable?: boolean;
/**
* 是否允许关闭窗口
* 默认为 true
*/
closable?: boolean;
/**
* 是否显示窗口边框
* 默认为 true
*/
frame?: boolean;
/**
* 是否显示窗口阴影
* 默认为 true
*/
hasShadow?: boolean;
/**
* 是否显示窗口圆角
* 默认为 true
*/
roundedCorners?: boolean;
/**
* 是否始终显示在其他窗口之上
* 默认为 false
*/
alwaysOnTop?: boolean;
/**
* 是否允许窗口获得焦点
* 默认为 true
*/
focusable?: boolean;
/**
* 是否在任务栏中显示窗口
* 默认为 false
*/
skipTaskbar?: boolean;
/**
* 是否允许窗口尺寸超出屏幕可显示范围
* 默认为 false
*/
enableLargerThanScreen?: boolean;
/**
* 是否允许窗口进入全屏模式
* 默认为 true
*/
fullscreenable?: boolean;
/**
* 是否以全屏模式创建窗口
* 默认为 false
*/
fullscreen?: boolean;
/**
* 窗口透明度,取值范围为 0.0 ~ 1.0
* 默认为 1.0
*/
opacity?: number;
/**
* 窗口背景颜色
*/
backgroundColor?: string;
/**
* 是否创建透明窗口
* 默认为 false
*/
transparent?: boolean;
/**
* 窗口标题栏样式
*/
titleBarStyle?: string;
/**
* 是否接受首次鼠标点击(macOS)
* 默认为 false
*/
acceptFirstMouse?: boolean;
/**
* 网页相关配置
*/
webPreferences?: {
/**
* preload.js 文件路径
*/
preload?: string;
};
}BrowserWindow 类型定义
ts
/**
* 矩形区域
*/
interface Rectangle {
/**
* 左上角横坐标
*/
x: number;
/**
* 左上角纵坐标
*/
y: number;
/**
* 宽度
*/
width: number;
/**
* 高度
*/
height: number;
}
/**
* 尺寸
*/
interface Size {
/**
* 宽度
*/
width: number;
/**
* 高度
*/
height: number;
}
/**
* 图像对象
*
* 用于承载截图、图标等图片数据。
*/
interface NativeImage {
/**
* 获取图片尺寸
*/
getSize(): Size;
/**
* 转换为 PNG 格式的二进制数据
*/
toPNG(): Uint8Array;
/**
* 转换为 JPEG 格式的二进制数据
*
* @param quality 图片质量,取值范围 0 ~ 100
*/
toJPEG(quality: number): Uint8Array;
/**
* 转换为 Base64 Data URL
*/
toDataURL(): string;
/**
* 裁剪图片区域
*
* @param rect 裁剪区域
*/
crop(rect: Rectangle): NativeImage;
/**
* 调整图片尺寸
*
* 只设置 width 或 height 时保持图片比例
*
* @param options 尺寸配置
*/
resize(options: {
/**
* 目标宽度
*/
width?: number;
/**
* 目标高度
*/
height?: number;
/**
* 缩放质量
*/
quality?: 'good' | 'better' | 'best';
}): NativeImage;
/**
* 是否为空图片
*/
isEmpty(): boolean;
}
/**
* 打印机信息
*/
interface PrinterSync {
/**
* 打印机描述
*/
description: string;
/**
* 打印机名称
*/
displayName: string;
/**
* 是否为默认打印机
*/
isDefault: boolean;
/**
* 打印机状态码
*/
status: number;
/**
* 打印机选项
*/
options?: {
'printer-location'?: string;
'printer-make-and-model'?: string;
'system_driverinfo'?: string;
};
}
/**
* WebRTC IP 处理策略
*/
type WebRTCIPHandlingPolicy =
| 'default'
| 'default_public_interface_only'
| 'default_public_and_private_interfaces'
| 'disable_non_proxied_udp';
/**
* 自定义窗口的页面对象
*
* 通过窗口实例的 webContents 属性访问,用于控制窗口内页面并与页面通信。
*/
interface WebContents {
/**
* 页面唯一标识
*/
id: number;
/**
* 向窗口页面发送消息
*
* 页面内通过 preload 中的 ipcRenderer.on(channel, ...) 接收。
*
* @param channel 消息通道名称
* @param args 消息参数
*/
send(channel: string, ...args: any[]): void;
/**
* 截取页面图像
*
* @param rect 截取区域,不传时截取整个页面
* @param options 截图配置
*/
capturePage(
rect?: Rectangle,
options?: {
/**
* 页面隐藏时是否仍进行截图
* 默认为 true
*/
stayHidden?: boolean;
/**
* 截图期间是否阻止系统进入休眠
* 默认为 false
*/
stayAwake?: boolean;
}
): Promise<NativeImage>;
/**
* 打开开发者工具
*
* @param options 开发者工具配置
*/
openDevTools(options?: {
/**
* 显示位置
*/
mode: 'left' | 'right' | 'bottom' | 'undocked' | 'detach';
/**
* 打开时是否激活
*/
activate?: boolean;
/**
* 窗口标题
*/
title?: string;
}): void;
/**
* 关闭开发者工具
*/
closeDevTools(): void;
/**
* 开发者工具是否已打开
*/
isDevToolsOpened(): boolean;
/**
* 开发者工具是否已获得焦点
*/
isDevToolsFocused(): boolean;
/**
* 切换开发者工具的显示状态
*/
toggleDevTools(): void;
/**
* 在页面中执行 JavaScript
*
* @param code 要执行的代码
* @param userGesture 是否以用户手势的方式执行,默认为 false
*/
executeJavaScript<T>(code: string, userGesture?: boolean): Promise<T>;
/**
* 向页面注入 CSS
*
* @param css 要注入的样式
* @param options 注入配置
*/
insertCSS(
css: string,
options?: {
/**
* 样式的来源层级
* 默认为 'author'
*/
cssOrigin?: 'user' | 'author';
}
): Promise<string>;
/**
* 移除通过 insertCSS 注入的样式
*
* @param key insertCSS 返回的标识
*/
removeInsertedCSS(key: string): Promise<void>;
/**
* 在页面中插入文本,模拟输入法输入
*
* @param text 文本内容
*/
insertText(text: string): Promise<void>;
/**
* 复制当前选中的内容
*/
copy(): void;
/**
* 剪切当前选中的内容
*/
cut(): void;
/**
* 粘贴剪贴板内容
*/
paste(): void;
/**
* 粘贴剪贴板内容并匹配当前样式
*/
pasteAndMatchStyle(): void;
/**
* 删除当前选中的内容
*/
delete(): void;
/**
* 撤销
*/
undo(): void;
/**
* 重做
*/
redo(): void;
/**
* 全选
*/
selectAll(): void;
/**
* 取消选中
*/
unselect(): void;
/**
* 替换当前选中的内容
*
* @param text 替换后的文本
*/
replace(text: string): void;
/**
* 替换当前拼写错误的单词
*
* @param text 替换后的文本
*/
replaceMisspelling(text: string): void;
/**
* 复制指定位置的图片
*
* @param x 页面横坐标
* @param y 页面纵坐标
*/
copyImageAt(x: number, y: number): void;
/**
* 在页面中查找文本
*
* @param text 要查找的文本
* @param options 查找选项
*/
findInPage(
text: string,
options?: {
/**
* 是否向前搜索
* 默认为 true
*/
forward?: boolean;
/**
* 是否开始新的查找会话,继续查找时设置为 false
* 默认为 false
*/
findNext?: boolean;
/**
* 是否区分大小写
* 默认为 false
*/
matchCase?: boolean;
}
): number;
/**
* 停止页面中的查找
*
* @param action 停止查找后的选区处理方式
*/
stopFindInPage(
action: 'clearSelection' | 'keepSelection' | 'activateSelection'
): void;
/**
* 页面是否正在加载
*/
isLoading(): boolean;
/**
* 页面主框架是否正在加载
*/
isLoadingMainFrame(): boolean;
/**
* 页面是否正在等待响应
*/
isWaitingForResponse(): boolean;
/**
* 停止加载当前页面
*/
stop(): void;
/**
* 页面是否已销毁
*/
isDestroyed(): boolean;
/**
* 页面是否已崩溃
*/
isCrashed(): boolean;
/**
* 页面是否已获得焦点
*/
isFocused(): boolean;
/**
* 页面是否正在绘制
*/
isPainting(): boolean;
/**
* 页面是否处于离屏渲染状态
*/
isOffscreen(): boolean;
/**
* 开始离屏渲染
*/
startPainting(): void;
/**
* 停止离屏渲染
*/
stopPainting(): void;
/**
* 页面是否正在被捕获
*/
isBeingCaptured(): boolean;
/**
* 页面当前是否可听见声音
*/
isCurrentlyAudible(): boolean;
/**
* 页面音频是否已静音
*/
isAudioMuted(): boolean;
/**
* 设置页面音频静音状态
*
* @param muted 是否静音
*/
setAudioMuted(muted: boolean): void;
/**
* 获取页面标题
*/
getTitle(): string;
/**
* 获取页面地址
*/
getURL(): string;
/**
* 获取页面 User-Agent
*/
getUserAgent(): string;
/**
* 设置页面 User-Agent
*
* @param userAgent User-Agent 字符串
*/
setUserAgent(userAgent: string): void;
/**
* 获取页面缩放比例
*/
getZoomFactor(): number;
/**
* 设置页面缩放比例
*
* @param factor 缩放比例,1.0 表示不缩放
*/
setZoomFactor(factor: number): void;
/**
* 页面后台节流是否已开启
*/
getBackgroundThrottling(): boolean;
/**
* 设置页面后台节流
*
* @param allowed 是否允许后台节流
*/
setBackgroundThrottling(allowed: boolean): void;
/**
* 获取页面帧率
*/
getFrameRate(): number;
/**
* 设置页面帧率
*
* @param fps 帧率
*/
setFrameRate(fps: number): void;
/**
* 获取页面的 WebRTC IP 处理策略
*/
getWebRTCIPHandlingPolicy(): WebRTCIPHandlingPolicy;
/**
* 设置页面的 WebRTC IP 处理策略
*
* @param policy 处理策略
*/
setWebRTCIPHandlingPolicy(policy: WebRTCIPHandlingPolicy): void;
/**
* 设置页面是否忽略菜单快捷键,便于在页面中自行处理按键
*
* @param ignore 是否忽略
*/
setIgnoreMenuShortcuts(ignore: boolean): void;
/**
* 获取页面所属的 Chromium 进程 ID
*/
getProcessId(): number;
/**
* 获取页面所属的操作系统进程 ID
*/
getOSProcessId(): number;
/**
* 获取系统打印机列表
*/
getPrinters(): PrinterSync[];
/**
* 打印页面
*
* @param options 打印选项
* @param callback 打印结束回调,success 为 false 时 errorType 表示失败原因
*/
print(
options?: Record<string, any>,
callback?: (success: boolean, errorType?: string) => void
): void;
/**
* 将页面导出为 PDF
*
* @param options PDF 选项
*/
printToPDF(options: Record<string, any>): Promise<Uint8Array>;
/**
* 保存页面
*
* @param fullPath 保存路径
* @param saveType 保存类型
*/
savePage(
fullPath: string,
saveType: 'HTMLOnly' | 'HTMLComplete' | 'MHTML'
): Promise<void>;
/**
* 将页面堆快照保存到文件
*
* @param filePath 保存路径
*/
takeHeapSnapshot(filePath: string): Promise<void>;
/**
* 发送输入事件
*
* @param e 输入事件对象
*/
sendInputEvent(e: any): void;
/**
* 清除页面重绘区域的内容
*/
invalidate(): void;
/**
* 让页面失去焦点
*/
blur(): void;
/**
* 让页面获得焦点
*/
focus(): void;
/**
* 开启设备模拟
*/
enableDeviceEmulation(): void;
/**
* 关闭设备模拟
*/
disableDeviceEmulation(): void;
}
/**
* 自定义窗口实例
*
* 由 utools.createBrowserWindow() 创建并返回,由 uTools 负责管理。
*/
interface BrowserWindow {
/**
* 窗口唯一标识
*/
id: number;
/**
* 窗口页面对象,用于控制页面并与页面通信
*/
webContents: WebContents;
/**
* 显示窗口
*/
show(): void;
/**
* 显示窗口但不激活,即不抢占当前焦点
*/
showInactive(): void;
/**
* 隐藏窗口
*/
hide(): void;
/**
* 销毁窗口并释放资源
*/
destroy(): void;
/**
* 关闭窗口
*/
close(): void;
/**
* 窗口是否已获得焦点
*/
isFocused(): boolean;
/**
* 窗口是否已销毁
*/
isDestroyed(): boolean;
/**
* 窗口是否可见
*/
isVisible(): boolean;
/**
* 让窗口获得焦点
*/
focus(): void;
/**
* 让窗口失去焦点
*/
blur(): void;
/**
* 设置窗口是否允许调整大小
*
* @param resizable 是否允许调整大小
*/
setResizable(resizable: boolean): void;
/**
* 窗口是否允许调整大小
*/
isResizable(): boolean;
/**
* 设置窗口尺寸
*
* @param width 宽度,单位为 DIP
* @param height 高度,单位为 DIP
* @param animate 是否以动画方式调整尺寸(macOS)
*/
setSize(width: number, height: number, animate?: boolean): void;
/**
* 获取窗口尺寸,单位为 DIP
*/
getSize(): [width: number, height: number];
/**
* 设置窗口位置
*
* @param x 横坐标,单位为 DIP
* @param y 纵坐标,单位为 DIP
* @param animate 是否以动画方式移动(macOS)
*/
setPosition(x: number, y: number, animate?: boolean): void;
/**
* 获取窗口位置,单位为 DIP
*/
getPosition(): [x: number, y: number];
/**
* 设置窗口区域
*
* @param bounds 目标区域
* @param animate 是否以动画方式调整(macOS)
*/
setBounds(bounds: Rectangle, animate?: boolean): void;
/**
* 获取窗口区域
*/
getBounds(): Rectangle;
/**
* 设置窗口内容区域
*
* @param bounds 目标区域
*/
setContentBounds(bounds: Rectangle): void;
/**
* 获取窗口内容区域
*/
getContentBounds(): Rectangle;
/**
* 获取窗口恢复正常状态后的区域
*/
getNormalBounds(): Rectangle;
/**
* 设置窗口内容尺寸
*
* @param width 宽度,单位为 DIP
* @param height 高度,单位为 DIP
*/
setContentSize(width: number, height: number): void;
/**
* 获取窗口内容尺寸,单位为 DIP
*/
getContentSize(): [width: number, height: number];
/**
* 设置窗口最小尺寸
*
* @param width 最小宽度
* @param height 最小高度
*/
setMinimumSize(width: number, height: number): void;
/**
* 获取窗口最小尺寸
*/
getMinimumSize(): [width: number, height: number];
/**
* 设置窗口最大尺寸
*
* @param width 最大宽度
* @param height 最大高度
*/
setMaximumSize(width: number, height: number): void;
/**
* 获取窗口最大尺寸
*/
getMaximumSize(): [width: number, height: number];
/**
* 设置窗口是否可启用,设置为 false 时窗口不响应鼠标与键盘事件
*
* @param enable 是否可启用
*/
setEnabled(enable: boolean): void;
/**
* 窗口是否可启用
*/
isEnabled(): boolean;
/**
* 最大化窗口
*/
maximize(): void;
/**
* 取消最大化窗口
*/
unmaximize(): void;
/**
* 窗口是否已最大化
*/
isMaximized(): boolean;
/**
* 最小化窗口
*/
minimize(): void;
/**
* 恢复窗口,即取消最小化
*/
restore(): void;
/**
* 窗口是否已最小化
*/
isMinimized(): boolean;
/**
* 窗口是否处于正常状态,即既未最大化也未最小化
*/
isNormal(): boolean;
/**
* 设置窗口是否进入全屏
*
* @param flag 是否进入全屏
*/
setFullScreen(flag: boolean): void;
/**
* 窗口是否处于全屏状态
*/
isFullScreen(): boolean;
/**
* 设置窗口是否允许进入全屏
*
* @param fullscreenable 是否允许进入全屏
*/
setFullScreenable(fullscreenable: boolean): void;
/**
* 窗口是否允许进入全屏
*/
isFullScreenable(): boolean;
/**
* 设置窗口是否允许关闭
*
* @param closable 是否允许关闭
*/
setClosable(closable: boolean): void;
/**
* 窗口是否允许关闭
*/
isClosable(): boolean;
/**
* 设置窗口是否始终置顶
*
* @param flag 是否始终置顶
* @param level 置顶层级,取值参考 Electron,例如 'screen-saver'
*/
setAlwaysOnTop(flag: boolean, level?: string): void;
/**
* 窗口是否始终置顶
*/
isAlwaysOnTop(): boolean;
/**
* 将窗口置于同级窗口的顶层
*/
moveTop(): void;
/**
* 设置窗口标题
*
* @param title 窗口标题
*/
setTitle(title: string): void;
/**
* 获取窗口标题
*/
getTitle(): string;
/**
* 设置窗口宽高比
*
* @param aspectRatio 宽高比
* @param extraSize 额外尺寸
*/
setAspectRatio(aspectRatio: number, extraSize?: Size): void;
/**
* 设置窗口背景色
*
* @param backgroundColor 颜色值,支持 #RRGGBB 等格式
*/
setBackgroundColor(backgroundColor: string): void;
/**
* 获取窗口背景色
*/
getBackgroundColor(): string;
/**
* 设置窗口是否有阴影
*
* @param hasShadow 是否有阴影
*/
setHasShadow(hasShadow: boolean): void;
/**
* 窗口是否有阴影
*/
hasShadow(): boolean;
/**
* 设置窗口是否忽略鼠标事件
*
* @param ignore 是否忽略鼠标事件
* @param options forward 为 true 时忽略鼠标事件但仍接收鼠标移动事件
*/
setIgnoreMouseEvents(
ignore: boolean,
options?: {
/**
* 是否继续接收鼠标移动事件
*/
forward?: boolean;
}
): void;
/**
* 设置窗口是否在任务栏显示
*
* @param skip 是否跳过任务栏
*/
setSkipTaskbar(skip: boolean): void;
/**
* 设置菜单栏是否可见
*
* @param visible 是否可见
*/
setMenuBarVisibility(visible: boolean): void;
/**
* 菜单栏是否可见
*/
isMenuBarVisible(): boolean;
/**
* 设置任务栏进度条
*
* @param progress 进度值,取值范围 0 ~ 1,小于 0 时移除进度条
* @param options 进度条配置
*/
setProgressBar(
progress: number,
options?: {
/**
* 显示模式
*/
mode?: 'none' | 'normal' | 'indeterminate' | 'error' | 'paused';
}
): void;
/**
* 设置窗口是否在所有工作区可见(macOS、Linux)
*
* @param visible 是否在所有工作区可见
* @param options 配置项
*/
setVisibleOnAllWorkspaces(
visible: boolean,
options?: {
/**
* 切换到其他工作区时是否仍然可见
*/
visibleOnFullScreen?: boolean;
/**
* 是否跳过窗口转换动画
*/
skipTransformProcessType?: boolean;
}
): void;
/**
* 窗口是否在所有工作区可见
*/
isVisibleOnAllWorkspaces(): boolean;
/**
* 设置内容保护,防止其他应用截取窗口内容(Windows、macOS)
*
* @param enable 是否开启内容保护
*/
setContentProtection(enable: boolean): void;
/**
* 内容保护是否已开启
*/
isContentProtected(): boolean;
/**
* 设置窗口是否进入 kiosk 模式
*
* @param flag 是否进入 kiosk 模式
*/
setKiosk(flag: boolean): void;
/**
* 窗口是否处于 kiosk 模式
*/
isKiosk(): boolean;
/**
* 闪烁窗口以引起用户注意
*
* @param flag 是否闪烁
*/
flashFrame(flag: boolean): void;
/**
* 让窗口内的页面获得焦点
*/
focusOnWebView(): void;
/**
* 让窗口内的页面失去焦点
*/
blurWebView(): void;
/**
* 截取窗口页面图像
*
* @param rect 截取区域,不传时截取整个页面
* @param options 截图配置
*/
capturePage(
rect?: Rectangle,
options?: {
/**
* 页面隐藏时是否仍进行截图
* 默认为 true
*/
stayHidden?: boolean;
/**
* 截图期间是否阻止系统进入休眠
* 默认为 false
*/
stayAwake?: boolean;
}
): Promise<NativeImage>;
/**
* 重新加载窗口页面
*/
reload(): void;
/**
* 重新加载窗口页面并忽略缓存
*/
reloadIgnoringCache(): void;
/**
* 加载远程页面
*
* @param url 页面地址
*/
loadURL(url: string): Promise<void>;
/**
* 加载插件应用内的本地页面
*
* @param filePath 相对于插件应用根目录的页面路径
*/
loadFile(filePath: string): Promise<void>;
/**
* 窗口页面是否正在加载
*/
isLoading(): boolean;
/**
* 停止加载窗口页面
*/
stop(): void;
}示例
js
const win = utools.createBrowserWindow(
"test.html",
{
show: false,
title: "测试窗口",
webPreferences: {
preload: "test_preload.js",
},
},
() => {
// 显示
win.show();
}
);utools.sendToParent(channel[, ...args])
向创建当前自定义窗口的父窗口发送消息。
类型定义
ts
function sendToParent(channel: string, ...args: any[]): void;参数
channel:消息通道名称。...args:要发送的消息参数。
示例
js
// 自定义窗口调用
utools.sendToParent("pong", "hello", 123);utools.getWindowType()
获取当前窗口类型。
类型定义
ts
function getWindowType(): "main" | "detach" | "custom";返回
main:uTools 搜索框主窗口。detach:插件应用与 uTools 搜索框主窗口分离后运行的独立窗口。custom: 插件应用创建的自定义窗口。
示例
js
const windowType = utools.getWindowType();
console.log(windowType);utools.hideMainWindow(isRestorePreWindow)
隐藏 uTools 搜索框主窗口。
执行后,uTools 搜索框主窗口及当前在主窗口中运行的插件应用都会被隐藏;已经分离为独立窗口的插件应用不受影响。
类型定义
ts
function hideMainWindow(isFocusPrevWindow?: boolean): boolean;参数
isFocusPrevWindow:是否将焦点回归到之前操作的系统窗口,默认true
返回
true:执行成功。false: 执行失败,当前执行窗口不是 uTools 搜索框主窗口。
示例
js
utools.hideMainWindow();utools.showMainWindow()
显示 uTools 搜索框主窗口。
执行后,uTools 搜索框主窗口及当前在主窗口中运行的插件应用都会显示。
类型定义
ts
function showMainWindow(): boolean;返回
true:执行成功false: 执行失败,当前执行窗口不是 uTools 搜索框主窗口
示例
js
utools.showMainWindow();utools.setExpandHeight(height)
设置插件应用在 uTools 搜索框主窗口中的显示高度,单位为 DIP。
类型定义
ts
function setExpandHeight(height: number): boolean;参数
height:插件应用在主窗口中的显示高度,单位为 DIP。
返回
true:设置成功false:设置失败,当前执行窗口不是 uTools 搜索框主窗口
示例
js
utools.setExpandHeight(300);utools.setSubInput(onChange[, placeholder[, isFocus]])
设置子输入框。
进入插件应用后,uTools 搜索框主窗口的主输入框将切换为子输入框,插件应用可以通过子输入框接收用户输入。
类型定义
ts
function setSubInput(
onChange: (details: { text: string }) => void,
placeholder?: string,
isFocus?: boolean
): boolean;参数
onChange:子输入框内容发生变化时调用的回调函数。placeholder:子输入框占位文本。isFocus:是否自动聚焦输入框,默认为true。
返回
true:设置成功false:设置失败,当前执行窗口是自定义窗口
示例
js
utools.setSubInput(({ text }) => {
console.log(text);
}, "搜索");utools.removeSubInput()
移除子输入框。
类型定义
ts
function removeSubInput(): boolean;返回
true:移除成功。false: 移除失败,当前执行窗口是自定义窗口
示例
js
utools.removeSubInput();utools.setSubInputValue(text)
设置子输入框的值。
类型定义
ts
function setSubInputValue(text: string): boolean;参数
text:要设置的文本内容。
返回
true:设置成功。false:设置失败,当前执行窗口是自定义窗口。
示例
js
utools.setSubInputValue("hello world");utools.subInputFocus()
使子输入框获得焦点。
类型定义
ts
function subInputFocus(): boolean;返回
true:设置成功。false: 设置失败,当前执行窗口是自定义窗口。
示例
js
utools.subInputFocus();utools.subInputBlur()
使子输入框失去焦点,并使插件应用获得焦点。
类型定义
ts
function subInputBlur(): void;示例
js
utools.subInputBlur();utools.subInputSelect()
使子输入框获得焦点,并选中输入框中的全部内容。
类型定义
ts
function subInputSelect(): boolean;返回
true:操作成功。false:操作失败,当前执行窗口是自定义窗口。
示例
js
utools.subInputSelect();utools.findInPage(text[, options])
在当前页面中查找指定文本。
类型定义
ts
function findInPage(text: string, options?: FindInPageOptions): void;参数
text:要查找的文本。options:查找选项。
FindInPageOptions 类型定义
ts
interface FindInPageOptions {
/**
* 是否向前搜索
* 默认为 true
*/
forward?: boolean;
/**
* 是否开始新的查找会话
* 首次查找时应设置为 true,继续查找时设置为 false
* 默认为 false
*/
findNext?: boolean;
/**
* 是否区分大小写
* 默认为 false
*/
matchCase?: boolean;
}示例
js
utools.findInPage("hello");utools.stopFindInPage(action)
停止当前页面的文本查找,与 findInPage 配合使用。
类型定义
ts
function stopFindInPage(
action: "clearSelection" | "keepSelection" | "activateSelection"
): void;参数
action:停止查找后的选区处理方式,默认为clearSelection。clearSelection:清除选中文本。keepSelection:保留选中文本。activateSelection:激活选中文本。
示例
js
utools.stopFindInPage("clearSelection");utools.outPlugin([isKill])
退出当前插件应用。
默认情况下,插件应用退出到后台,等待下次快速响应;传入 true 时,将结束插件应用的运行。
类型定义
ts
function outPlugin(isKill?: boolean): void;参数
isKill:是否结束插件应用的运行,默认为false。
示例
js
// 退出到后台
utools.outPlugin();
// 结束运行
utools.outPlugin(true);