用過 laravel
的同學應該都知道一次性 session
。只會保留到下個 HTTP 請求到來之前,然後就會被刪除,通常用來做彈出提示。
但是經常會遇到使用者點選瀏覽器 返回按鈕,導致提示又出現了一次,電腦和手機瀏覽器都是這樣。
這是因為瀏覽器返回動作是沒有新的請求,只是本地 返回。
那筆者的思路就是通過 js
在瀏覽器中快取一個標誌用來記錄快閃記憶體是否已經被使用。同學可以通過下面程式碼思路自行修改:
// 基礎的判斷,php是否有快閃記憶體
@if(session()->has('success'))
// 繼續判斷瀏覽器是否有快取並且等於該快閃記憶體
if (sessionStorage.getItem('sessiontoastr') !== '{{ session('success') }}') {
// 記錄標誌,存的值就是快閃記憶體的值
sessionStorage.setItem('sessiontoastr', '{{ session('success') }}');
// 彈出提示(這裡做自己的快閃記憶體動作)
toastr.success('{{ session('success') }}');
} else {
// 刪不刪除標誌都可以
sessionStorage.removeItem('sessiontoastr');
}
@endif
注意:該程式碼也有bug,比如瀏覽器的前進按鈕,如有更好方案,歡迎討論。
本作品採用《CC 協議》,轉載必須註明作者和本文連結