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

瀏覽器相容性

另見