DeprecationReportBody

实验性: 这是一个 实验性技术
在生产环境中使用此功能之前,请仔细查看 浏览器兼容性表格

DeprecationReportBody 接口是 Reporting API 的一部分,表示弃用报告的主体。

当在由 ReportingObserver 观察的文档中使用弃用功能(例如弃用的 API 方法)时,会生成弃用报告。除了对该 API 的支持外,接收有用的弃用警告还依赖于浏览器供应商为弃用功能添加这些警告。

ReportBody DeprecationReportBody

构造函数

Report.Typedeprecation 时,DeprecationReportBody 的实例将作为 Report.body 的值返回。该接口没有构造函数。

实例属性

此接口还继承了 ReportBody 的属性。

DeprecationReportBody.id 实验性

一个字符串,表示已弃用的功能或 API,例如 NavigatorGetUserMedia。这可以用来按弃用功能对报告进行分组。

DeprecationReportBody.anticipatedRemoval 实验性

一个 Date 对象(呈现为字符串),表示预期从当前浏览器中删除该功能的日期。如果日期未知,则此属性将返回 null

DeprecationReportBody.message 实验性

一个包含弃用情况的人类可读描述的字符串,包括有关哪些更新的功能(如果有)已取代它的信息。这通常与浏览器在使用弃用功能时在其 DevTools 控制台中显示的消息(如果可用)相匹配。

DeprecationReportBody.sourceFile 实验性

一个包含使用弃用功能的源文件路径的字符串(如果已知),否则为 null

DeprecationReportBody.lineNumber 实验性

一个表示在源文件中使用弃用功能的行号的数字(如果已知),否则为 null

DeprecationReportBody.columnNumber 实验性

一个表示在源文件中使用弃用功能的列号的数字(如果已知),否则为 null

实例方法

此接口还继承了 ReportBody 的方法。

DeprecationReportBody.toJSON() 实验性

一个序列化器,它返回 InterventionReportBody 对象的 JSON 表示形式。

示例

在我们的 deprecation_report.html 示例中,我们创建了一个简单的报告观察器来观察我们网页上弃用功能的使用情况

js
const options = {
  types: ["deprecation"],
  buffered: true,
};

const observer = new ReportingObserver((reports, observer) => {
  reportBtn.onclick = () => displayReports(reports);
}, options);

然后,我们告诉它使用 ReportingObserver.observe() 开始观察报告;这告诉观察器开始在其报告队列中收集报告,并运行构造函数中指定的回调函数

js
observer.observe();

由于我们在 ReportingObserver() 构造函数内部设置了事件处理程序,因此我们现在可以单击按钮来显示报告详细信息。

image of a jolly bearded man with various stats displayed below it about a deprecated feature

报告详细信息通过 displayReports() 函数显示,该函数将观察器回调的 reports 参数作为其参数

js
function displayReports(reports) {
  const outputElem = document.querySelector(".output");
  const list = document.createElement("ul");
  outputElem.appendChild(list);

  reports.forEach((report, i) => {
    const listItem = document.createElement("li");
    const textNode = document.createTextNode(
      `Report ${i + 1}, type: ${report.type}`,
    );
    listItem.appendChild(textNode);
    const innerList = document.createElement("ul");
    listItem.appendChild(innerList);
    list.appendChild(listItem);

    for (const [key, value] of Object.entries(report.body)) {
      const innerListItem = document.createElement("li");
      innerListItem.textContent = `${key}: ${value}`;
      innerList.appendChild(innerListItem);
    }
  });
}

reports 参数包含观察器报告队列中所有报告的数组。我们使用基本的 for 循环遍历每个报告,然后使用 for...in 结构迭代报告主体(DeprecationReportBody 实例)中的每个条目,在列表项内显示每个键/值对。

规范

规范
弃用报告
# deprecationreportbody

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅