原生对话框

通过 chrovia.ui 显示浏览器原生提示、确认框和非模态通知。

能力:nativeDialogAPI: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 和执行上下文。分别测试提示、接受与取消确认,以及通知行为。