2015-11-05 182 views
0

我一直在嘗試使用sessionStorage在頁面之間保存javascript變量。Javascript頁面存儲信息

按我的理解,語法是:

sessionStorage.setItem('whateverkey', 'whatever value'); 

有沒有辦法救sessionStorage的內部變量或其他簡便的方法來拯救整個

感謝

頁的信息提前!

+0

該代碼工作對我很好。你如何試圖訪問它? ETA:哦,會話存儲不能在不同的頁面上工作。 –

+2

使用'localStorage'而不是'sessionStorage' – dandavis

+0

謝謝! localStorage爲我工作 – Zerotik

回答

1

當我嘗試從另一個頁面訪問它時,我的值爲'null'。

這是exactly how sessionStorage is designed to work

sessionStorage屬性允許您訪問會話存儲對象。 sessionStorage與​​類似,唯一的區別是當存儲在localStorage中的數據沒有設置到期時,存儲在sessionStorage中的數據在頁面會話結束時被清除。只要瀏覽器處於打開狀態並且在頁面重新加載和恢復時存在,頁面會話就會持續。 在新選項卡或窗口中打開頁面將導致啓動新會話,這與會話cookie的工作方式不同。

如果您希望數據在同一來源的不同頁面上保留,請改用localStorage

1

sessionStorage用於存儲一個頁面/選項卡的數據,一旦關閉它,就會丟失數據,如果打開具有相同域的另一個選項卡,則會有一個新的實例sessionStorage clean。

你想要的是使用localStorage,它可用於所有選項卡(具有相同的域)。

sessionStorage維護每個給定的起源 這是可用於網頁會話期間單獨的存儲區域(只要 瀏覽器是開放的,包括頁面重新加載和恢復)。

localStorage做同樣的事情,但即使瀏覽器關閉並重新打開 仍然存在。 Source

0

您可以保存字符串和整數,但不能保存對象。但是你可以序列化東西並保存JSON。

localStorage用於永久存儲數據,而sessionStorage只是臨時存儲數據,直到用戶關閉Web瀏覽器爲止。

您使用的語法是正確的。您使用setItem存儲和getItem加載。

例子:

localStorage.setItem('name', 'Alice'); 
localStorage.setItem('marbles', 22); 
localStorage.setItem('admin', true); 

或:

var animal = {"type": "cat", "food": "catfood"}; 
localStorage.setItem('animal', JSON.stringify(animal)); 

那麼你就可以得到它:

var json = localStorage.getItem('animal'); 
var animal = JSON.parse(json);