Web Storage API пÑедоÑÑавлÑÐµÑ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼, пÑи помоÑи коÑоÑого бÑаÑÐ·ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñно Ñ ÑаниÑÑ Ð¿Ð°ÑÑ ÐºÐ»ÑÑей/знаÑений в намного более инÑÑиÑивной ÑоÑме, Ñем иÑполÑзÑÑ cookies. ÐÑа ÑÑаÑÑÑ Ð¿ÑедоÑÑавлÑÐµÑ Ð¿Ð¾Ñаговое ÑÑководÑÑво о Ñом, как иÑполÑзоваÑÑ ÑÑÑ Ð¿ÑоÑÑÑÑ ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ.
ÐÑновнÑе конÑепÑииStorage обÑекÑÑ Ð¿ÑоÑÑÑе Ñ ÑанилиÑа вида клÑÑ-знаÑение, Ð¿Ð¾Ñ Ð¾Ð¶Ð¸Ðµ Ñем-Ñо на обÑекÑÑ, но они оÑÑаÑÑÑÑ Ð½ÐµÐ¸Ð·Ð¼ÐµÐ½Ð½Ñми пÑи загÑÑзке ÑÑÑаниÑÑ. ÐлÑÑи и знаÑÐµÐ½Ð¸Ñ Ð²Ñегда ÑвлÑÑÑÑÑ ÑÑÑоками (обÑаÑиÑе внимание, ÑÑо ÑиÑловÑе клÑÑи бÑдÑÑ Ð°Ð²ÑомаÑиÑеÑки конвеÑÑиÑоваÑÑÑÑ Ð² ÑÑÑокÑ, ÑоÑно Ñакже как обÑекÑÑ). ÐÑ Ð¼Ð¾Ð¶ÐµÑе полÑÑиÑÑ Ð´Ð¾ÑÑÑп к ÑÑим знаÑениÑм как в обÑекÑÐ°Ñ , или getItem() и setItem() меÑодами. ÐÑе ÑÑи ÑÑÑоки ниже ÑÑÑанавливаÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾Ðµ знаÑение в colorSetting:
localStorage.colorSetting = '#a4509b'; localStorage['colorSetting'] = '#a4509b'; localStorage.setItem('colorSetting', '#a4509b');
РоÑнове Ðеб Ñ ÑанилиÑа Ð»ÐµÐ¶Ð°Ñ Ð´Ð²Ð° Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð°:
(sessionStorage)
обÑлÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¾Ð±Ð»Ð°ÑÑÑ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ домена, доÑÑÑпное на пÑоÑÑжении ÑеÑÑии. (пока бÑаÑÐ·ÐµÑ Ð¾ÑкÑÑÑ, даже в ÑлÑÑае пеÑезагÑÑзки ÑÑÑаниÑÑ)(localStorage)
Ð´ÐµÐ»Ð°ÐµÑ Ñо же Ñамое, но ÑоÑ
ÑанÑÐµÑ Ð´Ð°Ð½Ð½Ñе даже в ÑлÑÑае, еÑли пеÑеоÑкÑÑÑÑ Ð±ÑаÑзеÑ.Ðба меÑ
анизма доÑÑÑÐ¿Ð½Ñ ÑеÑез Window.sessionStorage
и Window.localStorage
ÑвойÑÑва (еÑли бÑÑÑ Ð±Ð¾Ð»ÐµÐµ ÑоÑнÑм, в бÑоÑзеÑаÑ
, поддеÑживаÑÑиÑ
Ñ
ÑанилиÑа обÑÐµÐºÑ Window
вÑполнÑÐµÑ Ð¾Ð±ÑекÑÑ WindowLocalStorage
и WindowSessionStorage
, коÑоÑÑе ÑодеÑÐ¶Ð°Ñ ÑвойÑÑва localStorage
и sessionStorage
) â вÑзов одного из ниÑ
ÑоздаÑÑ ÑкземплÑÑ Ð¾Ð±ÑекÑа Storage, ÑеÑез коÑоÑÑй можно ÑÑÑанавливаÑÑ, ÑедакÑиÑоваÑÑ Ð¸ ÑдалÑÑÑ Ð´Ð°Ð½Ð½Ñе. РазнÑе Storage обÑекÑÑ Ð±ÑдÑÑ Ð¸ÑполÑзоваÑÑ sessionStorage
и localStorage поÑÑÐ¾Ð¼Ñ Ð¾Ð½Ð¸ иÑполÑзÑÑÑÑÑ Ð¸ ÑпÑавлÑÑÑÑÑ ÑазделÑно
Так, напÑимеÑ, изнаÑалÑно вÑзов localStorage
в докÑменÑе возвÑаÑÐ°ÐµÑ Storage
обÑекÑ; вÑзов sessionStorage
в докÑменÑе возвÑаÑÐ°ÐµÑ Ð´ÑÑгой Storage
обÑекÑ. Ðба обÑекÑа могÑÑ ÑпÑавлÑÑÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾, но оÑделÑно.
ЧÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑ localStorage, Ð¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑпеÑва пÑовеÑиÑÑ, ÑÑо localStorage поддеÑживаеÑÑÑ Ð¸ доÑÑÑпно в ÑекÑÑем бÑаÑзеÑе.
ÐÑовеÑка на налиÑиеÐÑаÑзеÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаемÑе localStorage бÑдÑÑ Ð¸Ð¼ÐµÑÑ ÑвойÑÑво localStorage обÑекÑа window. Тем не менее по ÑазлиÑнÑм пÑиÑинам, пÑоÑÑое ÑÑвеÑждение, ÑÑо ÑÑо ÑвойÑÑво ÑÑÑеÑÑвÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð²ÑзÑваÑÑ Ð¸ÑклÑÑение. ÐÑли localStorage ÑÑÑеÑÑвÑÐµÑ ÑÑо еÑÑ Ð½Ðµ даÑÑ Ð³Ð°ÑанÑии, ÑÑо оно доÑÑÑпно, Ñ.к. ÑазлиÑнÑе бÑоÑзеÑÑ Ð¾Ð±Ð»Ð°Ð´Ð°ÑÑ Ð½Ð°ÑÑÑойками коÑоÑÑе оÑклÑÑаÑÑ ÐµÐ³Ð¾. ÐоÑÑÐ¾Ð¼Ñ Ð±ÑаÑÐ·ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ localStorage, но не Ð´ÐµÐ»Ð°ÐµÑ ÐµÐ³Ð¾ доÑÑÑпнÑм Ð´Ð»Ñ ÑкÑипÑов на ÑÑÑаниÑе. Ðдин из ÑÐ°ÐºÐ¸Ñ Ð¿ÑимеÑов бÑаÑÐ·ÐµÑ Safari, коÑоÑÑй в Private Browsing mode возвÑаÑÐ°ÐµÑ Ð½Ð°Ð¼ пÑÑÑой localStorage обÑекÑ, ÑакÑиÑеÑки Ð´ÐµÐ»Ð°Ñ ÐµÐ³Ð¾ непÑигоднÑм Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ . ÐаÑа ÑÑнкÑÐ¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° пÑинимаÑÑ Ð²Ð¾ внимание ÑÑÐ¾Ñ ÑÑенаÑий.
ФÑнкÑиÑ, коÑоÑÐ°Ñ Ð¿ÑовеÑÑÐµÑ Ð±ÑаÑзеÑÑ Ð½Ð° поддеÑÐ¶ÐºÑ Ð¸ доÑÑÑпноÑÑÑ localStorage:
function storageAvailable(type) {
try {
var storage = window[type],
x = "__storage_test__";
storage.setItem(x, x);
storage.removeItem(x);
return true;
} catch (e) {
return false;
}
}
ÐÐ¾Ñ ÐºÐ°Ðº Ð²Ñ Ð±Ñ Ð¼Ð¾Ð³Ð»Ð¸ иÑполÑзоваÑÑ ÑÑо:
if (storageAvailable("localStorage")) {
// Yippee! We can use localStorage awesomeness
} else {
// Too bad, no localStorage for us
}
ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑоÑеÑÑиÑоваÑÑ sessionStorage вмеÑÑо ÑÑого иÑполÑзÑйÑе storageAvailable('sessionStorage')
СмоÑÑиÑе здеÑÑ ÐºÑаÑкÑÑ Ð¸ÑÑоÑÐ¸Ñ ÑÑнкÑии-обнаÑÑÐ¶ÐµÐ½Ð¸Ñ localStorage
ЧÑÐ¾Ð±Ñ Ð¿ÑоиллÑÑÑÑиÑоваÑÑ ÑипиÑное иÑполÑзование Web storage, Ð¼Ñ Ñоздали пÑоÑÑой пÑимеÑ, назвав его Web Storage Demo. Ðа Ñелевой ÑÑÑаниÑе пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ ÑлеменÑÑ ÑпÑавлениÑ, коÑоÑÑе можно иÑполÑзоваÑÑ Ð´Ð»Ñ Ð½Ð°ÑÑÑойки ÑвеÑа, ÑÑиÑÑа и декоÑаÑивного изобÑажениÑ:
Ðогда Ð²Ñ Ð²ÑбиÑаеÑе ÑазлиÑнÑе опÑии, ÑÑÑаниÑа немедленно пеÑезагÑÑжаеÑÑÑ; в дополнение, Ð²Ð°Ñ Ð²ÑÐ±Ð¾Ñ ÑÐ¾Ñ ÑанÑеÑÑÑ Ð² localStorage, Ñаким обÑазом когда Ð²Ñ Ð¿Ð¾ÐºÐ¸Ð´Ð°ÐµÑе ÑÑÑаниÑÑ Ð¸ загÑÑжаеÑе ÐµÑ Ñнова ÑпÑÑÑÑ Ð½ÐµÐºÐ¾ÑоÑое вÑемÑ, ваÑи паÑамеÑÑÑ ÑÐ¾Ñ ÑанÑÑÑÑÑ.
ÐÑ Ñакже пÑедоÑÑавили ÑÑÑаниÑÑ Ð²Ñвода ÑобÑÑий - еÑли Ð²Ñ Ð·Ð°Ð³ÑÑзиÑе ÑÑÑ ÑÑÑаниÑÑ Ð² дÑÑгой вкладке, заÑем ÑделаеÑе некоÑоÑÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² landing page, Ð²Ñ ÑвидиÑе обновлÑннÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ Ñ ÑанилиÑе.
ÐÑимеÑание: Ðомимо пÑоÑмоÑÑа пÑимеÑов вÑÑе, иÑполÑзÑÑ Ð¿ÑиведÑннÑе ÑÑÑлки вÑÑе , Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе Ñакже пÑоÑмоÑÑеÑÑ Ð¸ÑÑ Ð¾Ð´Ð½Ñй код.
ÐÑовеÑка на заполненноÑÑÑ Ñ ÑанилиÑаÐаÑнÑм Ñ main.js, Ð¼Ñ Ð¿ÑовеÑим бÑл ли Ñже заполнен обÑÐµÐºÑ Storage (Ñ.е ÑÑÑаниÑа бÑла Ñанее доÑÑÑпна)
if (!localStorage.getItem("bgcolor")) {
populateStorage();
} else {
setStyles();
}
ÐеÑод Storage.getItem()
иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
из storage; в ÑÑом пÑимеÑе Ð¼Ñ Ð¿ÑовеÑÑем, ÑÑÐ¾Ð±Ñ ÑвидеÑÑ ÑÑÑеÑÑвÑÐµÑ Ð»Ð¸ bgcolor; еÑли неÑ, Ð¼Ñ Ð·Ð°Ð¿ÑÑкаем populateStorage(), ÑÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ð² storage. ÐÑли знаÑÐµÐ½Ð¸Ñ Ñже еÑÑÑ Ñам, Ð¼Ñ Ð·Ð°Ð¿ÑÑкаем setStyles(), Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑÐ¸Ð»Ñ ÑÑÑаниÑа Ñ ÑоÑ
ÑанÑннÑми знаÑениÑми.
ÐÑимеÑание: Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе Ñакже иÑполÑзоваÑÑ Storage.length
Ð´Ð»Ñ Ð¿ÑовеÑки storage object.
Ðак бÑло оÑмеÑено вÑÑе, знаÑÐµÐ½Ð¸Ñ Ñ
ÑанилиÑа могÑÑ Ð±ÑÑÑ Ð¸Ð·Ð²Ð»ÐµÑÐµÐ½Ñ Ð¸ÑполÑзÑÑ Storage.getItem()
. РкаÑеÑÑве аÑгÑменÑа ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð·Ð½Ð°Ñение клÑÑа ÑлеменÑа Ñ
ÑанилиÑа, а возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение ÑÑого ÑлеменÑа. ÐапÑимеÑ:
function setStyles() {
var currentColor = localStorage.getItem("bgcolor");
var currentFont = localStorage.getItem("font");
var currentImage = localStorage.getItem("image");
document.getElementById("bgcolor").value = currentColor;
document.getElementById("font").value = currentFont;
document.getElementById("image").value = currentImage;
htmlElem.style.backgroundColor = "#" + currentColor;
pElem.style.fontFamily = currentFont;
imgElem.setAttribute("src", currentImage);
}
ÐеÑвÑе ÑÑи ÑÑÑоки извлекаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑлеменÑов локалÑного Ñ ÑанилиÑа. ÐаÑем Ð¼Ñ Ð·Ð°Ð¿Ð¸ÑÑваем знаÑÐµÐ½Ð¸Ñ ÑлеменÑов ÑоÑмÑ, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ ÑÐ¾Ñ ÑанилиÑÑ Ð¿Ð¾Ñле пеÑезагÑÑзки ÑÑÑаниÑÑ. ÐаконеÑ, Ð¼Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»Ñем ÑÑили и изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° ÑÑÑаниÑе, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ вÑÑÑпили в ÑилÑ.
Ð¡Ð¾Ñ Ñанение знаÑений в Ñ ÑанилиÑеÐеÑод Storage.setItem()
иÑполÑзÑеÑÑÑ ÐºÐ°Ðº Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²ÑÑ
, Ñак и Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑÑеÑÑвÑÑÑиÑ
ÑлеменÑов. Ðн пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð´Ð²Ð° аÑгÑменÑа â клÑÑ ÑлеменÑа и знаÑение Ð´Ð»Ñ Ñ
ÑанениÑ.
function populateStorage() {
localStorage.setItem("bgcolor", document.getElementById("bgcolor").value);
localStorage.setItem("font", document.getElementById("font").value);
localStorage.setItem("image", document.getElementById("image").value);
setStyles();
}
The populateStorage()
function sets three items in local storage â the background color, font, and image path. It then runs the setStyles()
function to update the page styles, etc.
We've also included an onchange
handler on each form element, so that the data and styling is updated whenever a form value is changed:
bgcolorForm.onchange = populateStorage;
fontForm.onchange = populateStorage;
imageForm.onchange = populateStorage;
ÐÑÑлеживание изменений в Ñ
ÑанилиÑе Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ StorageEvent
The StorageEvent
is fired whenever a change is made to the Storage
object. This won't work on the same page that is making the changes â it is really a way for other pages on the domain using the storage to sync any changes that are made. Pages on other domains can't access the same storage objects.
On the events page (see events.js) the only JavaScript is as follows:
window.addEventListener("storage", function (e) {
document.querySelector(".my-key").textContent = e.key;
document.querySelector(".my-old").textContent = e.oldValue;
document.querySelector(".my-new").textContent = e.newValue;
document.querySelector(".my-url").textContent = e.url;
document.querySelector(".my-storage").textContent = e.storageArea;
});
Here we add an event listener to the window
object that fires when the Storage
object associated with the current origin is changed. As you can see above, the event object associated with this event has a number of properties containing useful information â the key of the data that changed, the old value before the change, the new value after that change, the URL of the document that changed the storage, and the storage object itself.
Web Storage Ñакже пÑедоÑÑавлÑÐµÑ Ð½ÐµÑколÑко пÑоÑÑÑÑ Ð¼ÐµÑодов Ð´Ð»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐÑ Ð½Ðµ иÑполÑзÑем ÑÑи меÑÐ¾Ð´Ñ Ð² наÑем дÑма, но они оÑÐµÐ½Ñ Ð¿ÑоÑÑÑе, ÑÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð¸Ñ Ð² пÑоекÑ:
Storage.removeItem()
пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÐµÐ´Ð¸Ð½ÑÑвеннÑй аÑгÑÐ¼ÐµÐ½Ñ - клÑÑ ÑлеменÑа даннÑÑ
, коÑоÑÑй Ð²Ñ Ñ
оÑиÑе ÑдалиÑÑ - и ÑдалÑÐµÑ ÐµÐ³Ð¾ из обÑекÑа Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑÑого домена.Storage.clear()
не пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð°ÑгÑменÑов, полноÑÑÑÑ Ð¾ÑиÑÐ°ÐµÑ Ð¾Ð±ÑекÑа storage Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ домена.RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4