Aplikasi web modern sering menggunakan pola single-page application (SPA): kerangka halaman tetap terbuka, sementara konten berubah ketika pengguna memilih menu. Pendekatan ini dapat terasa cepat, tetapi pengelolaan URL, tombol Back dan Forward, serta navigasi yang berasal dari berbagai sumber mudah menjadi rumit jika setiap perubahan ditangani dengan kode berbeda.
Navigation API menawarkan antarmuka browser yang lebih terpadu untuk mengamati, memulai, dan menangani navigasi. API ini dirancang untuk kebutuhan aplikasi web modern dan dapat mengurangi sebagian pekerjaan manual yang sebelumnya dilakukan dengan event klik serta History API. Namun, API ini bukan pengganti server, router aplikasi, atau pengujian kompatibilitas.
Apa Itu Navigation API?
Navigation API menyediakan objek window.navigation yang mewakili navigasi pada konteks halaman saat ini. Melalui objek tersebut, aplikasi dapat menerima event navigasi, berpindah ke URL lain, serta membaca entri riwayat yang dibuat pada konteks penjelajahan yang sama dan berasal dari origin yang sama.
Perbedaan pentingnya dengan pendekatan lama adalah adanya titik pengamatan terpusat. Dengan History API, pengembang biasanya menggabungkan penanganan klik tautan, pemanggilan pushState(), perubahan konten, dan tombol kembali. Navigation API membantu menyatukan alur itu, terutama ketika navigasi berasal dari tautan, kode aplikasi, atau tindakan riwayat browser yang memang dapat diintersepsi.
Mengapa SPA Dapat Diuntungkan?
Router SPA perlu menjaga beberapa hal tetap selaras: URL yang terlihat, konten yang ditampilkan, posisi gulir, status pemuatan, dan perilaku tombol Back atau Forward. Jika satu bagian terlupakan, pengguna dapat melihat URL yang tidak sesuai dengan konten, kembali ke halaman yang salah, atau kehilangan konteks ketika membuka tautan langsung.
Event navigate memberi aplikasi satu tempat untuk menilai navigasi yang terjadi. Metode intercept() memungkinkan navigasi yang memenuhi syarat ditangani dengan proses aplikasi sendiri, misalnya mengambil data lalu memperbarui tampilan. Untuk navigasi yang tidak dapat diintersepsi, browser tetap menjalankan perilaku normalnya.
Memahami Alur Dasar Navigasi
Saat navigasi dimulai, browser dapat mengirim event navigate. Objek event menyediakan informasi tentang tujuan dan apakah navigasi dapat diintersepsi. Aplikasi sebaiknya memeriksa syarat tersebut sebelum memanggil intercept(), lalu membatasi penanganan hanya pada rute yang memang dikelola oleh SPA.
Objek Navigation juga menyediakan metode seperti navigate(), back(), forward(), dan traverseTo(). Pemanggilan metode navigasi mengembalikan promise committed dan finished: yang pertama menandai perubahan entri atau URL telah dilakukan, sedangkan yang kedua menandai pekerjaan navigasi yang diintersepsi telah selesai. Perbedaan ini berguna saat aplikasi perlu menampilkan indikator pemuatan atau melakukan pembersihan setelah rute selesai.
Contoh Pola Penanganan Rute
Contoh berikut menggambarkan pola dasar untuk rute internal yang diawali /app/. Fungsi renderRoute() dan showNavigationError() adalah fungsi milik aplikasi yang perlu disediakan sendiri.
if ("navigation" in window) {
navigation.addEventListener("navigate", (event) => {
if (!event.canIntercept) return;
const destination = new URL(event.destination.url);
if (destination.origin !== location.origin) return;
if (!destination.pathname.startsWith("/app/")) return;
event.intercept({
async handler() {
try {
await renderRoute(destination.pathname + destination.search);
} catch (error) {
showNavigationError();
throw error;
}
}
});
});
}Contoh tersebut bukan router lengkap. Aplikasi tetap perlu menentukan rute yang sah, menampilkan status pemuatan, menangani rute tidak ditemukan, serta memastikan konten diperbarui secara aksesibel. Jangan mengintersepsi semua URL tanpa pengecekan: tautan unduhan, formulir, navigasi lintas origin, dan perilaku browser tertentu mungkin perlu dipertahankan.
Menjaga Riwayat, Fokus, dan Gulir
Perpindahan rute tidak hanya soal mengganti isi elemen utama. Setelah konten berubah, pengguna keyboard perlu mengetahui lokasi fokus, pembaca layar perlu mendapat konteks halaman yang baru, dan posisi gulir harus masuk akal. Gunakan judul halaman yang sesuai, pindahkan fokus secara terencana ketika diperlukan, serta pertahankan perilaku tautan dan formulir yang diharapkan pengguna.
Jika aplikasi memakai transisi visual, pisahkan logika transisi dari logika pengambilan data. Tangani kondisi gagal dengan pesan yang dapat dipahami, dan jangan membiarkan layar kosong ketika permintaan jaringan gagal. Penggunaan promise finished atau event keberhasilan dan kegagalan navigasi dapat membantu mengatur indikator pemuatan dan pembersihan.
Kompatibilitas dan Strategi Fallback
Dokumentasi MDN menandai Navigation API sebagai fitur yang baru tersedia secara luas pada browser modern pada 2026, tetapi perangkat lama atau browser tertentu masih dapat berbeda. Periksa "navigation" in window sebelum menggunakan API dan uji perilaku pada browser yang benar-benar digunakan audiens.
Untuk aplikasi yang harus mendukung lingkungan lebih luas, pertahankan navigasi tautan standar sebagai jalur cadangan. History API atau router yang sudah digunakan dapat tetap menjadi solusi fallback; hindari menjalankan dua pengendali navigasi secara bersamaan karena dapat menyebabkan rute diproses dua kali. Uji pula akses langsung ke URL, refresh, Back, Forward, tautan eksternal, dan respons server untuk rute dalam aplikasi.
Keamanan dan Praktik Implementasi
- Validasi tujuan rute dan origin sebelum mengambil alih navigasi.
- Jangan memasukkan respons jaringan ke
innerHTMLtanpa sanitasi yang sesuai. - Jangan menganggap navigasi sisi klien sebagai kontrol akses; server tetap harus memeriksa autentikasi dan otorisasi.
- Batalkan atau abaikan permintaan lama ketika pengguna berpindah rute dengan cepat agar hasil usang tidak menimpa tampilan terbaru.
- Catat kegagalan secara proporsional, tanpa merekam token, data pribadi, atau parameter sensitif ke log.
- Uji dengan keyboard, pembaca layar, koneksi lambat, dan respons server yang gagal.
Kesimpulan
Navigation API dapat membuat pengelolaan navigasi SPA lebih konsisten karena menyediakan event dan operasi riwayat dalam satu antarmuka. Manfaatnya paling terasa ketika aplikasi perlu menyelaraskan URL, konten, dan perilaku Back atau Forward. Mulailah dari satu kelompok rute, tambahkan pemeriksaan kompatibilitas, dan pertahankan navigasi standar sebagai fallback. Sebelum dirilis, uji seluruh alur pengguna—bukan hanya perpindahan halaman yang terlihat berhasil.
Referensi teknis: MDN Web Docs: Navigation API dan Navigation API Explainer (WICG).
PENGALAMAN BARU Coba tampilan baru Penasaran dengan pengalaman membaca Nazuaf versi modern? Coba tampilan baru yang dirancang agar nyaman dibaca dari ponsel dan pc. Buka versi modern dan lanjutkan membaca artikel ini. Jelajahi tampilan baru Nazuaf versi modern · Ketuk kartu untuk mencoba