开发者

Clearing localStorage in javascript?

Is there any way to开发者_运维问答 reset/clear the browser's localStorage in javascript?


Use this to clear localStorage:

localStorage.clear();


If you want to remove a specific Item or variable from the user's local storage, you can use

localStorage.removeItem("name of localStorage variable you want to remove");


window.localStorage.clear(); //try this to clear all local storage


If you need to clear the local storage data use:

localStorage.clear()

To remove a particular item from the local storage use :

localStorage.removeItem('Item')


Localstorage is attached on the global window. When we log localstorage in the chrome devtools we see that it has the following APIs:

Clearing localStorage in javascript?

We can use the following API's for deleting items:

  1. localStorage.clear(): Clears the whole localstorage
  2. localStorage.removeItem('myItem'): To remove individual items


Here is a function that will allow you to remove all localStorage items with exceptions. You will need jQuery for this function. You can download the gist.

You can call it like this

let clearStorageExcept = function(exceptions) {
  let keys = [];
  exceptions = [].concat(exceptions); // prevent undefined

  // get storage keys
  $.each(localStorage, (key) => {
    keys.push(key);
  });

  // loop through keys
  for (let i = 0; i < keys.length; i++) {
    let key = keys[i];
    let deleteItem = true;

    // check if key excluded
    for (let j = 0; j < exceptions.length; j++) {
      let exception = exceptions[j];
      if (key == exception) {
        deleteItem = false;
      }
    }

    // delete key
    if (deleteItem) {
      localStorage.removeItem(key);
    }
  }
};


If you want to clear all item you stored in localStorage then

localStorage.clear();

Use this for clear all stored key.

If you want to clear/remove only specific key/value then you can use removeItem(key).

localStorage.removeItem('yourKey');


localStorage.clear();

or

window.localStorage.clear();

to clear particular item

window.localStorage.removeItem("item_name");

To remove particular value by id :

var item_detail = JSON.parse(localStorage.getItem("key_name")) || [];           
            $.each(item_detail, function(index, obj){
                if (key_id == data('key')) {
                    item_detail.splice(index,1);
                    localStorage["key_name"] = JSON.stringify(item_detail);
                    return false;
                }
            });


First things first, you need to check to make sure that localStorage is enabled. I would recommend doing it like this:

var localStorageEnabled = false;
try { localStorageEnabled = !!localStorage; } catch(e) {};

Yes, you can (in some cases) just check to see if the localStorage is a member of the window object. However, there are iframe sandboxing options (among other things) that will throw an exception if you even attempt to access the index 'localStorage'. Thus, for best-practices reasons, this is the best way to check to see if the localStorage is enabled. Then, you can just clear the localStorage like so.

if (localStorageEnabled) localStorage.clear();

For example, you could clear the localStorage after an error occurs in webkit browsers like so.

// clears the local storage upon error
if (localStorageEnabled)
  window.onerror = localStorage.clear.bind(localStorage);

In the above example, you need the .bind(window) because without it, the localStorage.clear function will run in the context of the window object, instead of the localStorage object making it silently fail. To demonstrate this, look at the below example:

window.onerror = localStorage.clear;

is the same as:

window.onerror = function(){
    localStorage.clear.call(window);
}


This code here you give a list of strings of keys that you don't want to delete, then it filters those from all the keys in local storage then deletes the others.

const allKeys = Object.keys(localStorage);

const toBeDeleted = allKeys.filter(value => {
  return !this.doNotDeleteList.includes(value);
});

toBeDeleted.forEach(value => {
  localStorage.removeItem(value);
});


To clear sessionStorage

sessionStorage.clear();


Here is a simple code that will clear localstorage stored in your browser by using javascript

    <script type="text/javascript">

if(localStorage) { // Check if the localStorage object exists

    localStorage.clear()  //clears the localstorage

} else {

    alert("Sorry, no local storage."); //an alert if localstorage is non-existing
}

</script>

To confirm if localstorage is empty use this code:

<script type="text/javascript">

// Check if the localStorage object exists
if(localStorage) {

    alert("Am still here, " + localStorage.getItem("your object name")); //put the object name
} else {
    alert("Sorry, i've been deleted ."); //an alert
}

</script>

if it returns null then your localstorage is cleared.


Manual Button:

<script>
function ask() {
if (confirm('Clear localStorage?') == true) {
localStorage.clear()
location.reload()
}
else {
alert('Nothing happend')
}
}
}
</script>
<style>
button {border-width:0px;background-color:#efefef;padding:5px;width:5cm;margin:5px;}
</style>
<button onclick=ask()>Clear localStorage</button>


If someone is looking for a way to clear the localStorage whenever a browser tab is closed, the below code works. (sample use case: keep some copied data in localStoarge, to paste on another tab - but at the same time, needs the cache to not appear on new tabs, whenever all the previous tabs gets closed)

window.onbeforeunload = () => {
  // get localStorage item with specified key
  const storage = JSON.parse(localStorage.getItem('MY_KEY'));
  // clear cache if exists
  if (!isNil(storage)) localStorage.removeItem('MY_KEY');
};

It adds an eventListener to the window, to detect tab closing and just before closed, it clears the tab's localStorage (of specified key). It will not clear localStorage (of the same key) on other tabs.

This is a great solution, if we want to clear localStorage only in the closed tab, and keep the localStorage (of the same key) on other tabs intact.

So that,

  1. as long as a user keeps one tab opened, the user can leverage the localStorage cache, and
  2. after all the tabs are closed, the localStorage will not appear on new tabs.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜