Отчёт
Ограниченная доступность
Эта функция не является Базовой, так как она не работает во всех широко используемых браузерах.
Примечание: Эта функция доступна в Потоках выполнения JavaScript.
Интерфейс Report API отчётов представляет собой отдельный отчёт.
К отчётам можно получить доступ несколькими способами:
- С помощью метода
ReportingObserver.takeRecords()— он возвращает все отчёты в очереди наблюдателя и очищает очередь. - С помощью параметра
reportsфункции обратного вызова, переданной в конструкторReportingObserver()при создании нового экземпляра наблюдателя. Он содержит список отчётов, которые в данный момент находятся в очереди наблюдателя. - Отправляя запросы к конечным точкам, определённым через заголовок HTTP
Reporting-Endpoints.
Свойства экземпляра
-
Report.bodyТолько для чтения -
Тело отчёта, которое является объектом
ReportBody, содержащим подробную информацию об отчёте. -
Report.typeТолько для чтения -
Тип созданного отчёта, например,
deprecationилиintervention. -
Report.urlТолько для чтения -
URL документа, который сгенерировал отчёт.
Методы экземпляра
У этого интерфейса нет определённых методов.
События
У этого интерфейса нет событий, которые срабатывают на нём.
Примеры
В нашем примере deprecation_report.html мы создаём простой наблюдатель отчётов, чтобы отслеживать использование устаревших функций на нашей веб-странице:
const options = {
types: ["deprecation"],
buffered: true,
};
const observer = new ReportingObserver((reports, observer) => {
reportBtn.onclick = () => displayReports(reports);
}, options);
Затем мы говорим ему начать наблюдение за отчётами с помощью ReportingObserver.observe(); это сообщает наблюдателю начать сбор отчётов в его очереди отчётов и выполняет функцию обратного вызова, указанную внутри конструктора:
observer.observe();
Благодаря обработчику событий, который мы настроили внутри конструктора ReportingObserver(), мы теперь можем нажать кнопку для отображения деталей отчёта.
Подробности отчёта отображаются с помощью функции displayReports(), которая принимает параметр reports обратного вызова наблюдателя в качестве параметра:
function displayReports(reports) {
const outputElem = document.querySelector(".output");
const list = document.createElement("ul");
outputElem.appendChild(list);
reports.forEach((report, i) => {
let listItem = document.createElement("li");
let textNode = document.createTextNode(
`Report ${i + 1}, type: ${report.type}`,
);
listItem.appendChild(textNode);
let innerList = document.createElement("ul");
listItem.appendChild(innerList);
list.appendChild(listItem);
for (const key in report.body) {
const innerListItem = document.createElement("li");
const keyValue = report.body[key];
innerListItem.textContent = `${key}: ${keyValue}`;
innerList.appendChild(innerListItem);
}
});
}
Параметр reports содержит массив всех отчётов в очереди наблюдателя. Мы перебираем каждый отчёт с помощью цикла forEach(), затем перебираем каждый элемент в теле отчёта с помощью структуры for...in, отображая каждую пару ключ/значение в элементе списка.
Спецификации
| Спецификация |
|---|
| Reporting API # dom-report |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
Report |
69 | 79 | 65Поддержка потоков введена в версии 77 |
56 | 16.4 | 69 | Нет | 48 | 16.4 | 10.0 | 69 |
body |
69 | 79 | 65 | 56 | 16.4 | 69 | Нет | 48 | 16.4 | 10.0 | 69 |
toJSON |
69 | 79 | 77 | 56 | 16.4 | 69 | Нет | 48 | 16.4 | 10.0 | 69 |
type |
69 | 79 | 65 | 56 | 16.4 | 69 | Нет | 48 | 16.4 | 10.0 | 69 |
url |
69 | 79 | 65 | 56 | 16.4 | 69 | Нет | 48 | 16.4 | 10.0 | 69 |
См. также
- API отчётов
-
Report-ToHTTP заголовок
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Report