Materi, terjemahan yang kami terbitkan hari ini, dikhususkan untuk API
ReportingObserver , mekanisme yang memungkinkan Anda mempelajari tentang penggunaan fitur-fitur usang, dan bahwa browser
mengganggu pekerjaan kode halaman.
ReportingObserver adalah bagian dari spesifikasi W3C
ini .
Mengapa ini dibutuhkan?
Misalkan Anda memiliki proyek web penting yang diluncurkan beberapa hari yang lalu. Pengguna, dalam banyak hal, sudah mulai mendaftar di situsnya. Semua orang tahu bahwa proyek seperti itu, sehingga mereka, secara sederhana, akan membawa uang ke perusahaan, harus bekerja secara stabil. Sekarang mari kita pikirkan apa yang terjadi jika klien Anda menemukan perilaku situs yang salah, penyebabnya adalah semacam kesalahan, dan Anda tidak tahu apa-apa tentang itu. Dia tidak akan memperbaiki kesalahan, kejadian yang tidak diketahui pengembang, itu akan terwujud berulang-ulang, dan ini, pada akhirnya, akan berdampak negatif pada tujuan bisnis proyek.
Pengunjung situs, sangat mungkin, tidak tahu apa-apa tentang pengembangan web, jadi ketika situs mulai bertingkah aneh, ia tidak mungkin melihat ke konsol untuk mencoba memahami masalah, yang diungkapkan sebagai pesan yang dimulai dengan
[Intervention] atau
[Deprecation] .
Faktanya, pengunjung situs tidak perlu peduli dengan kesalahan. Yang mereka butuhkan adalah stabilitas, kenyamanan, dan kepastian. Bug adalah masalah pengembang, dan API
ReportingObserver ada secara khusus untuk membantu pengembang mengatasi masalah ini. Menggunakan
ReportingObserver Anda dapat mengirim laporan kepada pengembang tentang penggunaan API yang sudah ketinggalan zaman atau tentang gangguan pada halaman browser. Alat penanganan kesalahan lainnya tidak menanggapi hal-hal seperti itu.
Seperti apa bentuk kerja
ReportingObserver :
const observer = new ReportingObserver((reports, observer) => { for (const report of reports) { console.log(report.type, report.url, report.body); } }, { buffered: true }); observer.observe();
Mari kita bicara tentang cara menggunakan API ini.
Struktur API ReportingObserver
Browser memiliki API yang dirancang untuk menangkap kesalahan. Misalnya,
window.onerror . Namun,
window.onerror sekali tidak melacak semua situasi masalah yang muncul selama pengoperasian halaman. Misalnya, alat ini membantu Anda mempelajari tentang kesalahan runtime yang disebabkan oleh pengecualian JavaScript atau kesalahan sintaksis dalam kode Anda. Namun, jika Anda menerima pemberitahuan tentang penggunaan fitur usang atau intervensi browser,
window.onerror tidak akan menanggapi pemberitahuan tersebut. Dalam situasi ini
ReportingObserver akan berguna.
Untuk menggunakan API
ReportingObserver , Anda harus membuat objek pengamat yang sesuai dengan memberikan callback, ketika dipanggil, laporan akan dikirim kepadanya dalam bentuk daftar masalah yang dihadapi pada halaman. Kami telah meninjau kode yang diperlukan untuk bekerja dengan
ReportingObserver . Sekarang mari kita lihat contoh data apa yang dikirim ke callback:
const observer = new ReportingObserver((reports, observer) => { for (const report of reports) { // โ report.id === 'XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload' // โ report.type === 'deprecation' // โ report.url === 'https://reporting-observer-api-demo.glitch.me' // โ report.body.message === 'Synchronous XMLHttpRequest is deprecated...' } }})
Saat bekerja dengan
ReportingObserver Anda dapat memfilter laporan. Misalnya, berikut adalah desain yang memungkinkan Anda untuk hanya menerima laporan tentang penggunaan fitur-fitur usang:
const observer = new ReportingObserver((reports, observer) => { ... }, {types: ['deprecation']});
Jika, saat membuat objek
ReportingObserver , Anda meneruskan properti
buffered: true ke sana, ini akan memungkinkan untuk melihat laporan yang dihasilkan sebelum pembuatan objek seperti itu:
const observer = new ReportingObserver((reports, observer) => { ... }, {types: ['intervention'], buffered: true});
Untuk menghentikan pemantauan laporan tentang penggunaan fitur yang sudah ketinggalan zaman atau tentang intervensi browser dalam kode, Anda dapat menonaktifkan objek pengamat:
observer.disconnect();
Contoh API Pelaporan Server
Berikut adalah contoh penggunaan objek pengamat
ReportingObserver . Berikut adalah diagram organisasi pengiriman laporan ke server:
const report = new ReportingObserver((reports, observer) => { for (const report of reports) { const stringifiedReport = JSON.stringify(report.body);
Ringkasan
API
ReportingObserver memungkinkan pengembang untuk memperluas jangkauan informasi yang diterima olehnya tentang kesalahan yang terjadi dalam proyeknya ketika pengguna nyata bekerja dengan mereka. API ini tersedia di Chrome 69, ada informasi bahwa fitur ini akan muncul di Edge. Apakah itu direncanakan untuk mengimplementasikan sesuatu yang serupa di Firefox atau Safari masih belum diketahui.
Detail tentang
ReportingObserver dapat ditemukan di
sini dan di
sini .
Pembaca yang budiman! Apa pendapat Anda tentang API ReportingObserver?
