Có một trường hợp sử dụng rất cụ thể trong đó mọi đề xuất sử dụng sessionStorage thay vì localStorage không thực sự hữu ích. Ca sử dụng sẽ đơn giản như có một cái gì đó được lưu trữ trong khi bạn có ít nhất một tab được mở, nhưng vô hiệu hóa nó nếu bạn đóng tab cuối cùng còn lại. Nếu bạn cần các giá trị của mình được lưu chéo và cửa sổ, sessionStorage không giúp bạn trừ khi bạn làm phức tạp cuộc sống của mình với người nghe, như tôi đã thử. Trong khi đó, localStorage sẽ hoàn hảo cho việc này, nhưng nó thực hiện công việc 'quá tốt', vì dữ liệu của bạn sẽ chờ ở đó ngay cả sau khi khởi động lại trình duyệt. Tôi đã kết thúc bằng cách sử dụng một mã tùy chỉnh và logic tận dụng lợi thế của cả hai.
Tôi muốn giải thích sau đó đưa ra mã. Đầu tiên lưu trữ những gì bạn cần trong localStorage, sau đó trong localStorage tạo một bộ đếm sẽ chứa số lượng tab mà bạn đã mở. Điều này sẽ được tăng lên mỗi khi trang tải và giảm mỗi lần tải trang. Bạn có thể chọn ở đây các sự kiện để sử dụng, tôi đề nghị 'tải' và 'dỡ tải'. Tại thời điểm bạn dỡ tải, bạn cần thực hiện các tác vụ dọn dẹp mà bạn muốn khi bộ đếm về 0, nghĩa là bạn đang đóng tab cuối cùng. Ở đây có phần khó khăn: Tôi chưa tìm thấy một cách đáng tin cậy và chung chung để nói sự khác biệt giữa tải lại trang hoặc điều hướng bên trong trang và việc đóng tab. Vì vậy, nếu dữ liệu bạn lưu trữ không phải là thứ bạn có thể xây dựng lại khi tải sau khi kiểm tra xem đây có phải là tab đầu tiên của bạn không, sau đó bạn không thể loại bỏ nó mỗi khi làm mới. Thay vào đó, bạn cần lưu trữ một cờ trong sessionStorage ở mỗi lần tải trước khi tăng bộ đếm tab. Trước khi lưu trữ giá trị này, bạn có thể thực hiện kiểm tra xem nó đã có giá trị chưa và nếu không, điều này có nghĩa là bạn đang tải vào phiên này lần đầu tiên, nghĩa là bạn có thể thực hiện dọn dẹp khi tải nếu điều này giá trị không được đặt và bộ đếm là 0.