返回知识中心
平台

浏览器功能支持不等于功能质量

说明浏览器 API 存在只是起点,可靠、可访问且尊重隐私的用户流程还需要更多证据。

BotBrowser Team

文档中心

想直接进入 平台 文档吗?

这篇文章属于博客内容库。若你要步骤化配置、参考说明和持续更新,请直接进入对应 docs 分区。

浏览器能力检测通向经过测试的用户可见结果

支持表说明某个版本预计暴露功能,却不能说明当前 origin 会成功、权限会被授予,或用户能完成任务。对于 browser-feature-support-versus-feature-quality 主题,BotBrowser 可在受控 context 中重复授权的兼容性流程,但不授予权限,也不保证应用结果。功能质量是声明的能力与可靠、可理解结果之间的距离。把支持数据用于规划,再测试真实用户流程。

三层证据

阅读 MDN Browser Compatibility Data 的备注、flag、安全上下文和部分支持说明,再结合 MDN Web API 及 WHATWG/W3C 规范。运行时检测只回答当前页面现在能尝试什么。这些信息都不识别个人,也不能证明应用操作已完成。

为每个可选 API 记录上下文、能力检测、权限结果、异常或拒绝、可见成功信号、可见失败信号和回退负责人。navigator 上存在方法,只代表“可以尝试”;完成应以可见界面或应用确认作为边界。

质量决策表

观察决策质量检查
方法和上下文存在用户主动操作后尝试一次保留进度和取消入口
方法缺失或被阻止使用等价回退保留输入和键盘操作
权限被拒绝解释并提供回退不循环重新请求
调用拒绝或超时分类有限失败不把服务故障叫作缺少支持
浏览器调用完成验证应用结果只确认用户可观察的结果

确定性失败 fixture

使用合成页面覆盖缺失、拒绝、异常和延迟状态,只替换自有 API,并断言用户看到的控件:

async function shareWithFallback() {
  const host = document.createElement('div');
  host.innerHTML = '<p id="status" role="status"></p><button id="fallback" hidden>复制链接</button>';
  document.body.append(host);
  const status = host.querySelector('#status');
  const fallback = host.querySelector('#fallback');
  if (typeof navigator.share !== 'function') {
    fallback.hidden = false;
    status.textContent = '请使用可用的备用操作';
    host.remove();
    return 'missing';
  }
  try {
    await navigator.share({ title: '合成项目', url: '/fixture' });
    status.textContent = '请求已接受,请验证可见结果';
    return 'accepted';
  } catch (error) {
    fallback.hidden = false;
    status.textContent = error?.name === 'NotAllowedError' ? '分享已取消' : '请使用备用操作';
    return 'fallback';
  } finally {
    console.assert(status.textContent.length > 0);
    host.remove();
  }
}

fixture 只证明分支与清理,不证明普遍兼容、账户状态、网络可达或业务交易。明确超时和重试上限,不要收集无关属性来强行进入主路径。

渐进增强就是质量

让复制链接、普通文件输入、手动填写和键盘操作在可选 API 不可用时仍能完成任务。切换路径时保留草稿,移动焦点并说明结果差异。浏览器、权限、origin 或策略变化后重新核对数据,并记录来源版本、上下文、状态、可见结果和复查日期。

BotBrowser 的能力与限制

BotBrowser 可为授权的兼容性流程和合成回退检查提供受控浏览器 context,帮助在声明的版本中比较同一自有页面而不共享可变会话存储。记录页面、版本、上下文假设、fixture 版本和用户可见结果。

BotBrowser 不保证每个 origin 都有 API,不会授予权限、把不安全上下文变安全,也不替代应用的可访问性和回退设计。合成流程通过不等于服务器记录、账户操作或业务交易成功。将 BotBrowser 证据与 MDN/规范和应用断言分开使用,不把它写成普遍支持承诺。

本主题中的 BotBrowser 能力是为 browser feature support 流程提供受控 context 和重复检查;限制是它不会授予权限、修复 origin 条件或证明 feature quality 已达到应用结果边界。

Operational checklist

从任务和可接受结果开始,记录主路径、等价回退、权限状态、可见结果和负责人。兼容数据用于选版本,不能直接变成支持承诺。把缺失、拒绝、失败、接受和完成分开记录;完成必须有用户可见或应用确认。fixture 应使用合成数据、有限重试和 finally 清理。检查安全上下文、iframe policy、键盘路径和焦点恢复。只保留规范化状态、来源版本、上下文和下一步,不采集身份或设备清单。生产证据应区分浏览器事件、权限结果和服务器确认。

Designing a useful support contract. 先定义用户动作、最低结果、回退路径和成功边界,再选择浏览器矩阵。为每项能力记录来源版本、上下文、权限、fixture、负责人和复查日期,不保存 profile 或原始控制台内容。 Permission and policy states. 权限属于用户和策略边界。测试拒绝、撤销、嵌入策略和延迟结果,保留草稿并避免循环请求。 Measuring visible outcomes without surveillance. 只记录有限状态、声明的版本和可见控件,不收集 navigator 清单、字体、渲染器、账户或位置。 Release review and incident triage. 发布比较使用相同合成输入,先区分 API 缺失、上下文、权限、浏览器调用和服务器失败,再决定更新矩阵或回退文案。 Quality contract maintenance. 新增 origin、iframe、策略或无障碍要求时更新 ledger 和一个 fixture 状态,确认回退仍有负责人。

另见 WebDriver BiDi 事件 与 Credential Management 登录。分开记录浏览器、权限和服务器结果,才能把“支持”转化为质量判断。

来源

#浏览器 API#兼容性#功能质量#渐进增强

让 BotBrowser 从研究走向生产

先用这些指南理解模型,再进入跨平台验证、隔离上下文和面向规模化的浏览器部署。