Skip to content

Instantly share code, notes, and snippets.

@ElectronicsArchiver
Created December 6, 2022 22:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ElectronicsArchiver/0d28500b2ecd2339645b2783b7f22592 to your computer and use it in GitHub Desktop.
Save ElectronicsArchiver/0d28500b2ecd2339645b2783b7f22592 to your computer and use it in GitHub Desktop.

Simpler / watered down version to MDN's one

function hasLocalStorage (){
    try {
        localStorage.setItem('test','test');
        localStorage.removeItem('test');
        return true;
    } catch ( error ) {
        return false;
    }
}

Fake localStorage

function ensureLocalStorage (){
    
    if(hasLocalStorage())
        return
    
    const ignore = () => {};
    
    window.localStorage = {
        removeItem : ignore ,
        getItem : () => null ,
        setItem : ignore ,
        clear : ignore
    }
}

Of course you could also implement non-persistent fake localstorage

function ensureLocalStorage (){
    
    if(hasLocalStorage())
        return
    
    const storage = new Map;
    
    window.localStorage = {
        removeItem : ( key ) => storage.delete(key) ,
        setItem : ( key , value ) => storage.set(key,value) ,
        getItem : ( key ) => storage.get(ket) ,
        clear : () => storage.clear()
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment