我擔心的是當瀏覽器崩潰sessionStorage仍然存在。所以我一直在尋找到可以清除sessionStorage的修復,我有以下片斷實現:
window.addEventListener('load', function() {
sessionStorage.setItem('good_exit', 'pending');
setInterval(function() {
sessionStorage.setItem('time_before_crash', new Date().toString());
}, 1000);
});
window.addEventListener('beforeunload', function() {
sessionStorage.setItem('good_exit', 'true');
});
if(sessionStorage.getItem('good_exit') &&
sessionStorage.getItem('good_exit') !== 'true') {
/*
insert crash logging code here
*/
alert('Hey, welcome back from your crash, looks like you crashed on: ' + sessionStorage.getItem('time_before_crash'));
}
佛細節,請參考以下鏈接: http://jasonjl.me/blog/2015/06/21/taking-action-on-browser-crashes/
通過添加一個空行你列出之前,你可以將其格式化爲一個列表。另外您還使用了其他什麼技術?你在說什麼令牌?如果瀏覽器在很長時間之後掛起,很可能會有其他不妥之處。這裏你真正的問題是什麼?它看起來像它的工作正常,因爲它只能在應用程序運行時刪除數據。如果數據過期了,它可能會讀取數據並且只在讀取時丟棄數據,並且不會主動監視SessionStorage是否存在過期內容。 – Seth
是的,應用程序正在運行(實際上它已被部署到我們的UAT環境中,並且始終處於轉儲狀態)。我們將從服務器接收到的令牌存儲到瀏覽器sessionStorage中(它在每種情況下運行良好)。但是,如果用戶對我的應用程序的理想時間超過5-6小時,並且瀏覽器進入掛起狀態,然後用戶關閉該瀏覽器並打開新瀏覽器,則會出現會話過期消息。這意味着在開放的瀏覽器上存在的令牌,由新開放的瀏覽器共享。 –
這就像IE瀏覽器掛起並且新的瀏覽器打開後的defaullt行爲,它將sessionStorage傳遞給另一個,以便用戶可以獲得恢復先前會話的機會。 –