原生对话框
通过 chrovia.ui 显示浏览器原生提示、确认框和非模态通知。
能力:nativeDialog。API:chrovia.ui。不需要 EP 配置。在 Provision Service Worker 使用;页面使用还需要 unrestrictedApi。
显示对话框
在浏览器窗口可用时,从插件的命令处理器调用:
async function askToContinue() {
const ui = globalThis.chrovia?.ui;
if (!ui) {
throw new Error('nativeDialog is required');
}
const accepted = await ui.confirm('SDK Example', 'Continue with this operation?');
if (!accepted) {
return false;
}
await ui.alert('SDK Example', 'The operation was confirmed.');
return true;
}方法与行为
| 方法 | 返回值 |
|---|---|
alert(title, message) | 对话框结束后解析为 undefined 的 Promise |
confirm(title, message) | 接受时为 true,其他结果为 false 的 Promise |
notify(title, message) | 显示非模态通知;确认或关闭后 Promise 解析为 undefined,不是显示后立即解析 |
标题和消息是字符串,不是 HTML。提示与确认使用关联浏览器窗口的 Chromium 原生消息框。通知是非模态的,不返回用户批准结果。接口没有自定义按钮、复选框或 HTML 选项。
处理失败
事件处理器中应 await 或捕获 Promise;对话框服务不可用时调用可能被拒绝。没有合适浏览器窗口时,alert() 可能不显示任何内容就解析,confirm() 则解析为 false。Provision Service Worker 调用使用最近活动的普通浏览器窗口。不要依赖用户在 headless 或首个窗口打开前看到提示。用于请求确认时,注意网络拦截的超时放行行为:确认框超过请求超时仍未关闭,不会继续阻止该请求。
此 API 与 window.alert、扩展通知不同。如果缺少 chrovia.ui,检查 nativeDialog 和执行上下文。分别测试提示、接受与取消确认,以及通知行为。