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?
