簡體   English   中英

sessionStorage未按預期工作

[英]sessionStorage isn't working as expected

這是我的代碼:

    sessionStorage.loggedIn = true;

    if (sessionStorage.loggedIn) {
        alert('true');
    }
    else {
        alert('false');
    }

很簡單。 必須有一些小事我不了解JavaScript如何評估這些表達式。 當我將sessionStorage.loggedIn = false ,“false”警報正確顯示。 但是,當我將sessionStorage.loggedIn更改為true時,即使清除會話后,“false”警報仍會彈出。 我對這個表達的態度是什么? 看起來很簡單,也許我只需要另外一雙眼睛。

嘗試將代碼更改為

sessionStorage.setItem('loggedIn',JSON.stringify(true));

if (JSON.parse(sessionStorage.getItem('loggedIn'))) {
    alert('true');
}
else {
    alert('false');
}

它應該在所有主流瀏覽器中保持一致。

setItem / getItem方法的接口是規范的編寫方式,因此采用這種方式比使用賦值屬性的快捷方式更安全。 此外, sessionStoragelocalStorage一樣,是一種基於文本的存儲機制,並不適用於存儲對象,因此您需要使用JSON.parseJSON.stringify包裝調用以獲得全面的預期結果。

請注意, JSON.parse並不總是與undefined / null值一起使用,所以最好先進行一些類型檢查。

您可以在此處閱讀存儲接口的規范

WebStorage對象(sessionStorage)中的鍵和值必須是字符串。 如果它們不是字符串,則在分配給sessionStorage時,它們“應該”在瀏覽器的實現中轉換為字符串。 如果您評估“true”或轉換為布爾值,它將正常工作。

https://code.google.com/p/sessionstorage/

http://www.w3schools.com/html/html5_webstorage.asp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM