localStorage在無痕模式下被禁用的問題

在移動web開發中,經常會使用到localStorage去緩存一些數據,一般情況下,我們只需要按照下面的代碼去使用就不會有
問題。

if(window.localStorage){
    localStorage.setItem('key','value');
}

但只是這樣判斷是不夠的,現在的一些瀏覽器有一種功能叫無痕瀏覽,顧名思義,就是用戶在瀏覽網頁的過程中什麼都不緩存,
什麼也不記錄,不留下痕跡。

自然地,localStorage也被禁用了。但此時window.localStorage並不是null,它還是原來的localStorage對象,只不過
這個對象的方法被禁用了。如果單純只按上面的方法判斷,js會拋出異常。

所以得用下面的代碼去判斷這個localStorage是否可用

var storageTest = function(storage){
    if(!!storage){
        try {
            storage.setItem("key", "value");
            storage.removeItem("key");
            return true;
        } catch(e){
            return false;
        }
    }else{
        return false;
    }
}

storageTest(window.localStorage);
storageTest(window.sessionStorage);

原文出處:http://www.foreverpx.cn

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章