ReportingObserver

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

注意:此功能在 Web Workers 中可用。

ReportingObserver 接口是 Reporting API 的一部分,它允许您收集和访问报告。

构造函数

ReportingObserver()

创建一个新的 ReportingObserver 对象实例,该实例可用于收集和访问报告。

实例属性

此接口没有定义任何属性。

实例方法

ReportingObserver.disconnect()

停止之前已开始观察的报告观察器收集报告。

ReportingObserver.observe()

指示报告观察器开始在其报告队列中收集报告。

ReportingObserver.takeRecords()

返回观察器报告队列中当前包含的报告列表,并清空队列。

事件

此接口没有触发的事件。

示例

在我们 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();

在示例的后面,我们故意使用了已弃用的 MediaDevices.getUserMedia() 版本。

js
if (navigator.mozGetUserMedia) {
  navigator.mozGetUserMedia(constraints, success, failure);
} else {
  navigator.getUserMedia(constraints, success, failure);
}

这会生成一个弃用报告;由于我们在 ReportingObserver() 构造函数中设置了事件处理程序,我们现在可以单击按钮来显示报告详细信息。

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

注意:如果您查看 完整的源代码,您会发现我们实际上调用了两次已弃用的 getUserMedia() 方法。在第一次调用之后,我们调用了 ReportingObserver.takeRecords(),它返回第一个生成的报告并清空队列。因此,当按下按钮时,只列出了第二个报告。

规范

规范
Reporting API
# interface-reporting-observer

浏览器兼容性

另见