Ada kasus penggunaan yang sangat spesifik di mana setiap saran untuk menggunakan sessionStorage bukan localStorage tidak benar-benar membantu. Kasing akan menjadi sesuatu yang sederhana seperti menyimpan sesuatu saat Anda memiliki setidaknya satu tab dibuka, tetapi membatalkannya jika Anda menutup sisa tab terakhir. Jika Anda ingin nilai-nilai Anda disimpan tab-silang dan jendela, sessionStorage tidak membantu Anda kecuali Anda menyulitkan hidup Anda dengan pendengar, seperti yang telah saya coba. Sementara itu localStorage akan menjadi sempurna untuk ini, tetapi melakukan pekerjaan 'terlalu baik', karena data Anda akan menunggu di sana bahkan setelah restart browser. Saya akhirnya menggunakan kode khusus dan logika yang memanfaatkan keduanya.
Saya lebih suka menjelaskan daripada memberikan kode. Pertama-tama simpan apa yang Anda butuhkan di localStorage, kemudian juga di localStorage buat penghitung yang akan berisi jumlah tab yang telah Anda buka. Ini akan meningkat setiap kali halaman dimuat dan berkurang setiap kali halaman dibongkar. Anda dapat memilih di sini tentang acara yang akan digunakan, saya sarankan 'muat' dan 'bongkar'. Pada saat Anda membongkar, Anda perlu melakukan tugas pembersihan yang ingin Anda lakukan ketika penghitung mencapai 0, artinya Anda menutup tab terakhir. Inilah bagian yang sulit: Saya belum menemukan cara yang dapat diandalkan dan generik untuk mengetahui perbedaan antara memuat ulang halaman atau navigasi di dalam halaman dan penutupan tab. Jadi, jika data yang Anda simpan bukan sesuatu yang dapat Anda bangun kembali setelah memeriksa bahwa ini adalah tab pertama Anda, maka Anda tidak dapat menghapusnya di setiap penyegaran. Alih-alih, Anda perlu menyimpan bendera di sessionStorage di setiap beban sebelum menambah penghitung tab. Sebelum menyimpan nilai ini, Anda dapat melakukan pengecekan untuk melihat apakah sudah memiliki nilai dan jika tidak, ini berarti Anda memuat ke dalam sesi ini untuk pertama kalinya, artinya Anda dapat melakukan pembersihan saat memuat jika ini nilai tidak diatur dan penghitung adalah 0.