ÐбâÑкÑи веб-ÑÑ
овиÑа localStorage Ñа sessionStorage дозволÑÑÑÑ Ð·Ð±ÐµÑÑгаÑи Ð´Ð°Ð½Ñ Ð² бÑаÑзеÑÑ Ñ Ð²Ð¸Ð³Ð»Ñди Ð¿Ð°Ñ ÐºÐ»ÑÑ/знаÑеннÑ.
Що ÑÑкаво, Ð´Ð°Ð½Ñ Ð·Ð±ÐµÑÑгаÑÑÑÑÑ Ð½Ð°Ð²ÑÑÑ Ð¿ÑÑÐ»Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÑÑоÑÑнки (Ð´Ð»Ñ sessionStorage) Ñ Ð¿ÑÑÐ»Ñ Ð¿Ð¾Ð²Ð½Ð¾Ð³Ð¾ закÑиÑÑÑ Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ вÑдкÑиÑÑÑ Ð²Ñкна бÑаÑзеÑа (Ð´Ð»Ñ localStorage). Ðи ÑкоÑо пеÑевÑÑимо Ñе на пÑакÑиÑÑ.
Ðи вже маÑмо cookies. ÐавÑÑо додаÑÐºÐ¾Ð²Ñ Ð¾Ð±âÑкÑи?
- Ðа вÑдмÑÐ½Ñ Ð²Ñд ÑайлÑв cookies, обâÑкÑи веб-ÑÑ Ð¾Ð²Ð¸Ñа не надÑилаÑÑÑÑÑ Ð½Ð° ÑеÑÐ²ÐµÑ Ñз кожним запиÑом. ÐавдÑки ÑÑÐ¾Ð¼Ñ Ð¼Ð¸ можемо збеÑÑгаÑи набагаÑо бÑлÑÑе Ð´Ð°Ð½Ð¸Ñ . ÐÑлÑÑÑÑÑÑ Ð±ÑаÑзеÑÑв дозволÑÑÑÑ Ð¿ÑÐ¸Ð½Ð°Ð¹Ð¼Ð½Ñ 5 мегабайÑÑв Ð´Ð°Ð½Ð¸Ñ (або бÑлÑÑе), коÑиÑÑÑÐ²Ð°Ñ Ð¼Ð¾Ð¶Ðµ навÑÑÑ Ð·Ð¼ÑниÑи Ñей обâÑм.
- ÐÑÑм Ñого, на вÑдмÑÐ½Ñ Ð²Ñд ÑайлÑв cookies, ÑеÑÐ²ÐµÑ Ð½Ðµ може манÑпÑлÑваÑи обâÑкÑами ÑÑ Ð¾Ð²Ð¸Ñа ÑеÑез HTTP-заголовки. ÐÑе зÑоблено на JavaScript.
- Ð¡Ñ Ð¾Ð²Ð¸Ñе пÑивâÑзане до оÑигÑналÑного ÑайÑÑ (домен/пÑоÑокол/поÑÑ). Таким Ñином, Ñо ÑÑÐ·Ð½Ñ Ð¿ÑоÑоколи або ÑÑбдомени маÑÑÑ ÑÑÐ·Ð½Ñ Ð¾Ð±âÑкÑи збеÑÑганнÑ, Ñ Ð½Ðµ можÑÑÑ Ð¾ÑÑимаÑи доÑÑÑп до Ð´Ð°Ð½Ð¸Ñ Ð¾Ð´Ð¸Ð½ одного.
Ðбидва обâÑкÑи ÑÑ Ð¾Ð²Ð¸Ñа забезпеÑÑÑÑÑ Ð¾Ð´Ð½Ð°ÐºÐ¾Ð²Ñ Ð¼ÐµÑоди Ñа влаÑÑивоÑÑÑ:
setItem(key, value)â збеÑегÑи паÑÑ ÐºÐ»ÑÑ/знаÑеннÑ.getItem(key)â оÑÑимаÑи знаÑÐµÐ½Ð½Ñ Ð·Ð° клÑÑем.removeItem(key)â видалиÑи Ð´Ð°Ð½Ñ Ð·Ð° клÑÑем.clear()â видалиÑи вÑе.key(index)â оÑÑимаÑи клÑÑ Ð½Ð° заданÑй позиÑÑÑ.lengthâ кÑлÑкÑÑÑÑ Ð·Ð±ÐµÑÐµÐ¶ÐµÐ½Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв.
Як ви можеÑе баÑиÑи, Ñе ÑÑ
оже на колекÑÑÑ Map (setItem/getItem/removeItem), але Ñакож дозволÑÑ Ð¾ÑÑимаÑи доÑÑÑп за ÑндекÑом за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ key(index).
ÐодивÑмоÑÑ, Ñк Ñе пÑаÑÑÑ.
ÐемонÑÑÑаÑÑÑ ÑобоÑи localStorage
ÐÑновними оÑобливоÑÑÑми localStorage Ñ:
- СпÑлÑний доÑÑÑп з ÑÑÑÑ Ð²ÐºÐ»Ð°Ð´Ð¾Ðº Ñ Ð²Ñкон Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ Ñого ж Ñамого ÑайÑÑ.
- ТеÑмÑн дÑÑ Ð´Ð°Ð½Ð¸Ñ Ð½Ðµ закÑнÑÑÑÑÑÑÑ. ÐÐ°Ð½Ñ Ð·Ð°Ð»Ð¸ÑаÑÑÑÑÑ Ð¿ÑÑÐ»Ñ Ð¿ÐµÑезаванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð±ÑаÑзеÑа Ñ Ð½Ð°Ð²ÑÑÑ Ð¿ÐµÑезаванÑÐ°Ð¶ÐµÐ½Ð½Ñ ÐС.
ÐапÑиклад, ÑкÑо ви запÑÑÑиÑе Ñей кодâ¦
localStorage.setItem('test', 1);
â¦Ð закÑиÑÑе/вÑдкÑиÑÑе бÑаÑÐ·ÐµÑ Ð°Ð±Ð¾ пÑоÑÑо вÑдкÑиÑÑе ÑÑ ÑÐ°Ð¼Ñ ÑÑоÑÑÐ½ÐºÑ Ð² ÑнÑÐ¾Ð¼Ñ Ð²ÑкнÑ, Ñо зможеÑе оÑÑимаÑи Ð´Ð°Ð½Ñ Ñак:
alert( localStorage.getItem('test') ); // 1
Ðи Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð±ÑÑи на ÑÐ¾Ð¼Ñ Ð¶ ÑÐ°Ð¼Ð¾Ð¼Ñ ÑайÑÑ (домен/поÑÑ/пÑоÑокол), ÑлÑÑ URL-адÑеÑи може вÑдÑÑзнÑÑиÑÑ
localStorage доÑÑÑпний Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑайÑÑ Ð² ÑÑÑÑ
вÑдкÑиÑиÑ
вÑкнаÑ
, ÑÐ¾Ð¼Ñ ÑкÑо ми вÑÑановимо Ð´Ð°Ð½Ñ Ð² Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð²ÑкнÑ, змÑна ÑÑане Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ñ Ð² ÑнÑомÑ.
ÐоÑÑÑп Ñк до звиÑайного обâÑкÑа
Ðи Ñакож можемо викоÑиÑÑовÑваÑи пÑоÑÑий обâÑкÑний ÑпоÑÑб оÑÑиманнÑ/запиÑÑ Ð´Ð°Ð½Ð¸Ñ , напÑиклад:
// запиÑаÑи Ð´Ð°Ð½Ñ Ð·Ð° клÑÑем
localStorage.test = 2;
// оÑÑимаÑи Ð´Ð°Ð½Ñ Ð·Ð° клÑÑем
alert( localStorage.test ); // 2
// видалиÑи данÑ
delete localStorage.test;
Це дозволено з ÑÑÑоÑиÑÐ½Ð¸Ñ Ð¿ÑиÑин Ñ Ð² ÑÑÐ»Ð¾Ð¼Ñ Ð¿ÑаÑÑÑ, але зазвиÑай не ÑекомендÑÑÑÑÑÑ, оÑкÑлÑки:
-
ЯкÑо клÑÑ ÑÑвоÑений коÑиÑÑÑваÑем, вÑн може бÑÑи бÑдÑ-Ñким, напÑиклад,
lengthабоtoString, або ÑнÑим вбÑдованим меÑодомlocalStorage. У ÑÑÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑgetItem/setItemпÑаÑÑÑ Ð½Ð¾ÑмалÑно, ÑÐ¾Ð´Ñ Ñк доÑÑÑп ÑеÑез обâÑÐºÑ Ð½Ñ:let key = 'length'; localStorage[key] = 5; // Ðомилка, не вдаÑÑÑÑÑ Ð·Ð°Ð´Ð°Ñи length -
ÐÑнÑÑ Ð¿Ð¾Ð´ÑÑ
storage, вона запÑÑкаÑÑÑÑÑ, коли ми змÑнÑÑмо данÑ. Ð¦Ñ Ð¿Ð¾Ð´ÑÑ Ð½Ðµ вÑдбÑваÑÑÑÑÑ Ð¿Ñи змÑÐ½Ñ Ð´Ð°Ð½Ð¸Ñ Ð±ÐµÐ· викликÑsetItem. Ðи поговоÑимо пÑо Ñе пÑзнÑÑе в ÑÑÐ¾Ð¼Ñ ÑоздÑлÑ.
ÐеÑебÑÑ ÐºÐ»ÑÑÑв
Як ми баÑили, меÑоди забезпеÑÑÑÑÑ ÑÑнкÑÑÑ âоÑÑимаÑи/запиÑаÑи/видалиÑи за клÑÑемâ. Ðле Ñк оÑÑимаÑи вÑÑ Ð·Ð±ÐµÑÐµÐ¶ÐµÐ½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ñи клÑÑÑ?
Ðа жалÑ, обâÑкÑи збеÑÑÐ³Ð°Ð½Ð½Ñ Ð½Ðµ Ñ ÑÑеÑаÑÑйними.
Ðдин Ð·Ñ ÑпоÑобÑв â пÑаÑÑваÑи з ними Ñк з маÑивом:
for(let i=0; i<localStorage.length; i++) {
let key = localStorage.key(i);
alert(`${key}: ${localStorage.getItem(key)}`);
}
ÐнÑий ÑпоÑÑб â викоÑиÑÑаÑи Ñикл for key in localStorage, Ñак Ñамо, Ñк Ð´Ð»Ñ Ð·Ð²Ð¸ÑайниÑ
обâÑкÑÑв.
ÐÑн пеÑебиÑÐ°Ñ ÐºÐ»ÑÑÑ, але Ñакож виводиÑÑ ÐºÑлÑка вбÑÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð»Ð°ÑÑивоÑÑей, ÑÐºÑ Ð½Ð°Ð¼ не поÑÑÑбнÑ:
// невдала ÑпÑоба
for(let key in localStorage) {
alert(key); // показÑÑ getItem, setItem Ñа ÑнÑÑ Ð²Ð±ÑÐ´Ð¾Ð²Ð°Ð½Ñ Ð²Ð»Ð°ÑÑивоÑÑÑ
}
â¦Ð¢Ð¾Ð¶ нам поÑÑÑбно або вÑдÑÑлÑÑÑÑваÑи Ð¿Ð¾Ð»Ñ Ð· пÑоÑоÑÐ¸Ð¿Ñ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ Ð¿ÐµÑевÑÑки hasOwnProperty:
for(let key in localStorage) {
if (!localStorage.hasOwnProperty(key)) {
continue; // пÑопÑÑкаÑи клÑÑÑ, ÑÐ°ÐºÑ Ñк "setItem", "getItem" ÑоÑо
}
alert(`${key}: ${localStorage.getItem(key)}`);
}
â¦Ðбо пÑоÑÑо оÑÑимаÑи âвлаÑнÑâ клÑÑÑ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ Object.keys, а поÑÑм пеÑебÑаÑи ÑÑ
, ÑкÑо поÑÑÑбно:
let keys = Object.keys(localStorage);
for(let key of keys) {
alert(`${key}: ${localStorage.getItem(key)}`);
}
ÐÑÑаннÑй ваÑÑÐ°Ð½Ñ Ð¿ÑаÑÑÑ, оÑкÑлÑки Object.keys повеÑÑÐ°Ñ Ð»Ð¸Ñе клÑÑÑ, ÑÐºÑ Ð½Ð°Ð»ÐµÐ¶Ð°ÑÑ Ð¾Ð±âÑкÑÑ, ÑгноÑÑÑÑи пÑоÑоÑип.
ТÑлÑки ÑÑдки
ÐвеÑнÑÑÑ ÑвагÑ, Ñо Ñ ÐºÐ»ÑÑ, Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ð¼Ð°ÑÑÑ Ð±ÑÑи ÑÑдками.
ЯкÑо ми ÑпÑобÑÑмо викоÑиÑÑаÑи бÑдÑ-Ñкий ÑнÑий Ñип, напÑиклад ÑиÑло або обâÑкÑ, вÑн авÑомаÑиÑно пеÑеÑвоÑиÑÑÑÑ Ð½Ð° ÑÑдок:
localStorage.user = {name: "John"};
alert(localStorage.user); // [object Object]
Ðднак ми можемо викоÑиÑÑаÑи JSON Ð´Ð»Ñ Ð·Ð±ÐµÑÑÐ³Ð°Ð½Ð½Ñ Ð¾Ð±âÑкÑÑв:
localStorage.user = JSON.stringify({name: "ТаÑаÑ"});
// ÑеÑез деÑкий ÑаÑ
let user = JSON.parse( localStorage.user );
alert( user.name ); // ТаÑаÑ
Також можна пеÑеÑвоÑиÑи веÑÑ Ð¾Ð±âÑÐºÑ ÑÑ Ð¾Ð²Ð¸Ñа на JSON ÑÑдок, напÑиклад, пÑд ÑÐ°Ñ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ ÐºÐ¾Ð´Ñ:
// додано паÑамеÑÑи ÑоÑмаÑÑÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ JSON.stringify, Ñоб обâÑÐºÑ Ð²Ð¸Ð³Ð»Ñдав кÑаÑе
alert( JSON.stringify(localStorage, null, 2) );
sessionStorage
ÐбâÑÐºÑ sessionStorage викоÑиÑÑовÑÑÑÑÑÑ Ð½Ð°Ð±Ð°Ð³Ð°Ñо ÑÑдÑе, нÑж localStorage.
ÐлаÑÑивоÑÑÑ Ñа меÑоди ÑÑ ÑамÑ, але можливоÑÑÑ Ð±ÑлÑÑ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ñ:
sessionStorageÑÑнÑÑ Ð»Ð¸Ñе на поÑоÑнÑй вкладÑÑ Ð±ÑаÑзеÑа.- ÐнÑа вкладка з ÑÑÑÑ Ð¶ ÑÑоÑÑÐ½ÐºÐ¾Ñ Ð¼Ð°Ñиме ÑнÑе ÑÑ Ð¾Ð²Ð¸Ñе.
- Ðле вÑн викоÑиÑÑовÑÑÑÑÑÑ Ð¼Ñж iframes на однÑй вкладÑÑ (за Ñмови, Ñо Ñе один ÑайÑ).
- ÐÐ°Ð½Ñ Ð·Ð±ÐµÑÑгаÑÑÑÑÑ Ð¿ÑÑÐ»Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÑÑоÑÑнки, але не закÑиÑÑÑ/вÑдкÑиÑÑÑ Ð²ÐºÐ»Ð°Ð´ÐºÐ¸.
ÐодивÑмоÑÑ Ð½Ð° Ñе в дÑÑ.
ÐапÑÑÑÑÑÑ Ñей кодâ¦
sessionStorage.setItem('test', 1);
â¦ÐоÑÑм оновÑÑÑ ÑÑоÑÑнкÑ. Ð¢ÐµÐ¿ÐµÑ Ð²Ð¸ вÑе Ñе можеÑе оÑÑимаÑи данÑ:
alert( sessionStorage.getItem('test') ); // пÑÑÐ»Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ: 1
â¦Ðле ÑкÑо ви вÑдкÑиÑÑе ÑÑ ÑÐ°Ð¼Ñ ÑÑоÑÑÐ½ÐºÑ Ð² ÑнÑÑй вкладÑÑ Ñа ÑпÑобÑÑÑе Ñам Ñе Ñаз, код виÑе повеÑне null, Ñо ознаÑÐ°Ñ âнÑÑого не знайденоâ.
Це Ñаме ÑомÑ, Ñо sessionStorage пÑивâÑзаний не лиÑе до ÑайÑÑ, а й до вкладки бÑаÑзеÑа. Ð ÑÑÑÑ Ð¿ÑиÑини sessionStorage викоÑиÑÑовÑÑÑÑÑÑ Ð½Ðµ ÑаÑÑо.
ÐодÑÑ storage
Ðоли Ð´Ð°Ð½Ñ Ð¾Ð½Ð¾Ð²Ð»ÑÑÑÑÑÑ Ð² localStorage або sessionStorage, запÑÑкаÑÑÑÑÑ Ð¿Ð¾Ð´ÑÑ storage Ñз влаÑÑивоÑÑÑми:
keyâ клÑÑ, Ñкий бÑло змÑнено (null, ÑкÑо викликаÑÑÑÑÑ.clear()).oldValueâ ÑÑаÑе знаÑÐµÐ½Ð½Ñ (null, ÑкÑо Ñе новий клÑÑ).newValueâ нове знаÑÐµÐ½Ð½Ñ (null, ÑкÑо Ð´Ð°Ð½Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð¾).urlâ URL-адÑеÑа докÑменÑа, де вÑдбÑлоÑÑ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ.storageAreaâ обâÑкÑlocalStorageабоsessionStorage, де вÑдбÑлоÑÑ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ.
Ðажливо: подÑÑ Ð·Ð°Ð¿ÑÑкаÑÑÑÑÑ Ð½Ð° вÑÑÑ
обâÑкÑаÑ
window, де доÑÑÑпне ÑÑ
овиÑе, кÑÑм Ñого, Ñо його викликало.
ÐавайÑе деÑалÑнÑÑе.
УÑвÑÑÑ, Ñ Ð²Ð°Ñ Ñ Ð´Ð²Ð° вÑкна з однаковим ÑайÑом Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð¼Ñ. Таким Ñином, localStorage Ñ ÑпÑлÑним мÑж ними.
Ðи можеÑе вÑдкÑиÑи ÑÑ ÑÑоÑÑÐ½ÐºÑ Ð² Ð´Ð²Ð¾Ñ Ð²ÑÐºÐ½Ð°Ñ Ð±ÑаÑзеÑа, Ñоб пеÑевÑÑиÑи наведений нижÑе код.
ЯкÑо обидва вÑкна пÑоÑлÑÑ
овÑÑÑÑ window.onstorage, Ñо кожне з ниÑ
ÑеагÑваÑиме на оновленнÑ, ÑÐºÑ Ð²ÑдбÑлиÑÑ Ð² ÑнÑомÑ.
// запÑÑÐºÐ°Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ, ÑÑвоÑÐµÐ½Ñ Ð² ÑÐ¾Ð¼Ñ ÑÐ°Ð¼Ð¾Ð¼Ñ ÑÑ
овиÑÑ Ð· ÑнÑиÑ
докÑменÑÑв
window.onstorage = event => { // Ñакож можна викоÑиÑÑовÑваÑи window.addEventListener('storage', event => {
if (event.key != 'now') return;
alert(event.key + ':' + event.newValue + " в " + event.url);
};
localStorage.setItem('now', Date.now());
ÐвеÑнÑÑÑ ÑвагÑ, Ñо подÑÑ Ñакож мÑÑÑиÑÑ: event.url â URL-адÑеÑÑ Ð´Ð¾ÐºÑменÑа, в ÑÐºÐ¾Ð¼Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ данÑ.
ÐÑÑм Ñого, event.storageArea мÑÑÑиÑÑ Ð¾Ð±âÑÐºÑ ÑÑ
овиÑа â подÑÑ Ð¾Ð´Ð½Ð°ÐºÐ¾Ð²Ð° Ð´Ð»Ñ sessionStorage Ñа localStorage, ÑÐ¾Ð¼Ñ event.storageArea поÑилаÑÑÑÑÑ Ð½Ð° Ñой, Ñкий бÑло змÑнено. Ðи навÑÑÑ Ð¼Ð¾Ð¶ÐµÐ¼Ð¾ заÑ
оÑÑÑи ÑоÑÑ Ð·Ð¼ÑниÑи в нÑомÑ, âвÑдÑеагÑваÑиâ на змÑни.
Це дозволÑÑ ÑÑзним вÑкнам одного ÑайÑÑ Ð¾Ð±Ð¼ÑнÑваÑиÑÑ Ð¿Ð¾Ð²ÑдомленнÑми.
СÑÑаÑÐ½Ñ Ð±ÑаÑзеÑи Ñакож пÑдÑÑимÑÑÑÑ Broadcast channel API, ÑпеÑÑалÑний API Ð´Ð»Ñ Ð¼ÑжвÑконного звâÑÐ·ÐºÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ джеÑела, вÑн бÑлÑÑ Ð¿Ð¾Ð²Ð½Ð¾ÑÑнкÑÑоналÑний, але Ð¼Ð°Ñ Ð¼ÐµÐ½ÑÑ Ð¿ÑдÑÑÐ¸Ð¼ÐºÑ ÑеÑед бÑаÑзеÑÑв. ÐÑнÑÑÑÑ Ð±ÑблÑоÑеки-полÑÑÑли ÑÑого API на оÑÐ½Ð¾Ð²Ñ localStorage, Ñо ÑобиÑÑ Ð¹Ð¾Ð³Ð¾ доÑÑÑпним майже ÑкÑÑзÑ.
ÐÑдÑÑмки
ÐбâÑкÑи веб-ÑÑ
овиÑа localStorage Ñа sessionStorage дозволÑÑÑÑ Ð·Ð±ÐµÑÑгаÑи клÑÑ/знаÑÐµÐ½Ð½Ñ Ð² бÑаÑзеÑÑ.
- Ð
key, ÑvalueмаÑÑÑ Ð±ÑÑи ÑÑдками. - ÐÑмÑÑ ÑÑановиÑÑ 5 Ðб+, залежиÑÑ Ð²Ñд бÑаÑзеÑа.
- ÐÐ°Ð½Ñ Ð½Ðµ маÑÑÑ ÑеÑмÑÐ½Ñ Ð·Ð±ÐµÑÑганнÑ, ÑобÑо не видалÑÑÑÑÑÑ.
- ÐÐ°Ð½Ñ Ð¿ÑивâÑÐ·Ð°Ð½Ñ Ð´Ð¾ ÑайÑÑ (домен/поÑÑ/пÑоÑокол).
localStorage |
sessionStorage |
|---|---|
| СпÑлÑний Ð´Ð»Ñ Ð²ÑÑÑ Ð²ÐºÐ»Ð°Ð´Ð¾Ðº Ñ Ð²Ñкон з однаковим ÑайÑом | ÐÑдобÑажаÑÑÑÑÑ Ñ Ð²ÐºÐ»Ð°Ð´ÑÑ Ð±ÑаÑзеÑа, вклÑÑаÑÑи iframe Ñого Ñамого ÑайÑÑ |
| Ðе видалÑÑÑÑÑÑ Ð¿Ñи пеÑезапÑÑÐºÑ Ð±ÑаÑзеÑа | ÐиÑÑимÑÑ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÑÑоÑÑнки (але не закÑиÑÑÑ Ð²ÐºÐ»Ð°Ð´ÐºÐ¸) |
API:
setItem(key, value)â збеÑегÑи паÑÑ ÐºÐ»ÑÑ/знаÑеннÑ.getItem(key)â оÑÑимаÑи знаÑÐµÐ½Ð½Ñ Ð·Ð° клÑÑем.removeItem(key)â видалиÑи Ð´Ð°Ð½Ñ Ð·Ð° клÑÑем.clear()â видалиÑи вÑе.key(index)â оÑÑимаÑи клÑÑ Ð½Ð° заданÑй позиÑÑÑ.lengthâ кÑлÑкÑÑÑÑ Ð·Ð±ÐµÑÐµÐ¶ÐµÐ½Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв.- ÐикоÑиÑÑовÑйÑе
Object.keys, Ñоб оÑÑимаÑи вÑÑ ÐºÐ»ÑÑÑ. - Ðи маÑмо доÑÑÑп до клÑÑÑв Ñк влаÑÑивоÑÑей обâÑкÑа Ñа можемо ними манÑпÑлÑваÑи, Ñ ÑÑÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ Ð¿Ð¾Ð´ÑÑ
storageне ÑнÑÑÑÑÑÑÑÑÑ.
ÐодÑÑ storage:
- СпÑаÑÑовÑÑ Ð½Ð° виклики
setItem,removeItem,clear. - ÐÑÑÑиÑÑ ÑÑÑ Ð´Ð°Ð½Ñ Ð¿Ñо опеÑаÑÑÑ (
key/oldValue/newValue), URL-адÑеÑÑ Ð´Ð¾ÐºÑменÑа Ñа обâÑÐºÑ ÑÑ Ð¾Ð²Ð¸ÑаstorageArea. - СпÑаÑÑовÑÑ Ð´Ð»Ñ Ð²ÑÑÑ
обâÑкÑÑв
window, ÑÐºÑ Ð¼Ð°ÑÑÑ Ð´Ð¾ÑÑÑп до ÑÑ Ð¾Ð²Ð¸Ñа, кÑÑм Ñого, Ñкий його ÑÑвоÑив (Ñ Ð¼ÐµÐ¶Ð°Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ¸ длÑsessionStorage, глобалÑно длÑlocalStorage).
ÐоменÑаÑÑ
<code>, Ð´Ð»Ñ ÐºÑлÑÐºÐ¾Ñ ÑÑдкÑв â обгоÑнÑÑÑ ÑÑ Ñегом<pre>, Ð´Ð»Ñ Ð¿Ð¾Ð½Ð°Ð´ 10 ÑÑдкÑв â викоÑиÑÑовÑйÑе пÑÑоÑниÑÑ (plnkr, jsbin, codepenâ¦)