Lokální úložiště dat. Jak automaticky odstranit osobní údaje při zavření prohlížeče. Online nebo offline aplikace

Webové prohlížeče jsou ve výchozím nastavení nastaveny tak, aby při zavření ukládaly vaše osobní údaje, včetně historie prohlížení, cookies, vaše vyhledávací dotazy, co a kdy jste stáhli. Pokud mají k vašemu počítači přístup třetí strany, může kdokoli zobrazit, jaké stránky jste navštívili, jaké požadavky jste vznesli a mnoho dalšího. To vše lze odstranit ručně v nastavení prohlížeče, pouze když to chcete udělat sami. Pokud jste zastáncem ochrany osobních údajů a své osobní údaje mažete ručně pokaždé, když dokončíte práci na internetu, pak vězte, že prohlížeč může tuto funkci provádět automaticky. Jakmile kliknete na tlačítko Exit, prohlížeč tuto práci udělá za vás. Vezměte prosím na vědomí, že pokud nastavíte svůj prohlížeč podle tohoto návodu, vaše soubory cookie budou vymazány. To znamená, že se budete muset znovu přihlásit na webové stránky, na kterých jste registrováni. Vymazání souborů mezipaměti také způsobí pomalejší načítání webových stránek po restartování prohlížeče.

Google Chrome nezahrnuje možnost v nastavení automatické mazání vaše osobní údaje, když je zavřete. Je však možné nakonfigurovat prohlížeč tak automatické čištění při odchodu. Chcete-li to provést, musíte nainstalovat a používat rozšíření, ale o tom později. Chcete-li začít, otevřete nastavení v nabídce Chrome a klikněte na úplně dole na stránce Ukázat další nastavení , sloupec Osobní data, zmáčknout tlačítko Nastavení obsahu. V otevřeném bloku ve sloupci Soubory cookie Nainstalujte Při zavření prohlížeče smažte místní data a stiskněte tlačítko Připraveno.

Teď kdy zavření Chrome, prohlížeč automaticky vymaže soubory cookie. Abyste zajistili, že prohlížeč po zavření vymaže všechna vaše osobní data, musíte si do Internetového obchodu Chrome nainstalovat rozšíření Click&Clean. Click&Clean vám pomůže vymazat historii procházení a stahování, vymazat mezipaměť, zrychlit Chrome a uvolnit místo na pevném disku! Jednoduché a efektivní řešení pro vyčištění vašeho PC: Vymaže historii procházení, vymaže historii stahování, vymaže cookies, vymaže mezipaměť, smaže Silverlight cookies, vymaže soubory Flash LSO, vymaže mezipaměť Java a mnoho dalšího. Po instalaci klikněte na tlačítko Click&Clean na panelu nástrojů prohlížeče a vyberte Nastavení.

Zapnout " Spusťte čištění při zavírání Chrome» v sekci Další.

Pomocí možností v tomto okně můžete určit, jaké typy dat se automaticky odstraní.

Firefox má vestavěnou schopnost vymazat všechna vaše osobní data, když ji zavřete, bez nutnosti rozšíření. I když pokud se podíváte na obrázek výše, rozšíření Click&Clean v nadpisu je odkaz Dostat pro Firefox! přímo nainstalovat rozšíření do prohlížeče. Pokud na odkaz kliknete, automaticky se spustí Prohlížeč Firefox a nainstalujte rozšíření. Ale pokud jste proti rozšířením, nakonfigurujte prohlížeč pomocí vlastních prostředků. Otevřete předvolby Firefoxu. Přejděte na kartu Soukromí a vyberte " Použije nastavení úložiště historie. Zaškrtněte políčko Smazat historii při zavření Firefoxu.

Můžete ovládat, jaké typy osobních údajů Data Firefoxu se automaticky vyčistí, stiskněte tlačítko Možnosti.

Vyberte, co chcete smazat při zavření prohlížeče a co chcete ponechat tak, jak je.

internet Explorer Má také vestavěnou schopnost vymazat vaše osobní údaje, když je zavřete. Klikněte Servis a vyberte možnosti internetu pro spuštění nastavení. Na kartě Jsou běžné ve sloupci Historie prohlížeče povolit možnost Při ukončení smazat historii procházení. Nakonfigurujte, které typy internetová data Průzkumník se vyčistí, když ukončíte a kliknete Vymazat.

Můžete například zrušit zaškrtnutí políčka " Uložte data z vašich oblíbených webových stránek“ a poté Internet Explorer nevymaže soubory cookie a soubory mezipaměti pro webové stránky uložené jako oblíbené. Klepněte na tlačítko Vymazat až budete s nastavením hotovi. Internet Explorer okamžitě spustí mechanismus čištění. Když prohlížeč zavřete, prohlížeč nyní vymaže osobní údaje.

Opera jako vždy není jako všechny ostatní. Nezahrnuje funkce, které mohou automaticky odstranit všechna vaše osobní data, když zavřete prohlížeč. Opera k tomu používá mechanismus tzv Soukromé prohlížení. Chcete-li zobrazit stránky v tomto režimu, vyberte položku v nabídce Opera Vytvořte soukromé okno nebo Ctrl+Shift+N. Soukromé prohlížení znamená, že všechny informace o vaší online aktivitě v historii budou smazány ihned po zavření okna. Když zavřete toto okno a všechny související karty, Prohlížeč Opera smaže všechna data s nimi spojená: historii procházení, položky mezipaměti, soubory cookie. Zavřené soukromé okno nelze obnovit ze seznamu Nedávno zavřené v hlavní nabídce. Po použití soukromá okna neukládají se žádné informace o navštívených stránkách, ale pokud chcete konkrétně uložit některá data, existuje funkce „prasátko“.

Při zavření prohlížeče automaticky smažte osobní údaje
Pokud si uložíte heslo nebo stáhnete soubor, tyto položky zůstanou dostupné i po zavření okna.
Poznámka! Upozorňujeme, že Opera nevymaže stávající soubory cookie. Chcete-li je vymazat, použijte Všechny soubory cookie a data webu.

Otevřít v nabídce Nastavení, přejděte na kartu Ochrana osobních údajů a zabezpečení. Ve sloupci Soubory cookie Nainstalujte Uchovávejte místní data, dokud neukončíte prohlížeč. Klikněte Všechny soubory cookie a data stránek, odstranit soubory cookie.

Vezměte prosím na vědomí, že pro úplné vymazání osobních údajů budete muset zavřít prohlížeč. Například, pokud jich máte několik otevřená okna, při zavření jednoho nebo více nebudou data automaticky smazána. Budete muset zavřít všechna okna prohlížeče.

Používání funkcí HTML5 k ukládání dat a práci offline

Část 1. Implementace offline editace dat a synchronizace dat

Obsahová řada:

Tento obsah je součástí # série # článků: Používání funkcí HTML5 k ukládání dat a práci offline

http://www.?sn=dw&lang=ru&cc=RU&en=utf&hpp=20&dws=rudw&lo=ru&q=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0% B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6% D0%BD%D0%BE%D1%81%D1%82%D0%B5%D0%B9+HTML5+%D0%B4%D0%BB%D1%8F+%D1%81%D0%BE%D1%85% D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F+%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1% 85+%D0%B8+%D0%BE%D1%84%D1%84%D0%BB%D0%B0%D0%B9%D0%BD%D0%BE%D0%B2%D0%BE%D0%B9+ %D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B&Search=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA

Zůstaňte naladěni na nové články v této sérii.

Podle stávajících plánů získá technologie HTML5 (HTML verze 5) status doporučení organizace Celosvětově Web Consortium (W3C) nejdříve v roce 2014. Přestože technologie HTML5 ještě není oficiálním standardem, výrobci webových prohlížečů již přidávají a propagují funkce HTML5. Technologie HTML5 vylepšuje webové funkce pro internetové stránky a obchodní aplikace. Mnoho webových stránek jako např Amazon Kindle Cloud Reader již využívá technologii HTML5. Následující dvě klíčové funkce HTML5 výrazně změní obchodní aplikace: podpora offline aplikací a lokální trvalé úložiště. Vzhledem k tomu, že technologie HTML5 není oficiálním standardem, její podpora různé prohlížeče PROTI nejlepší scénář ne uniformní.

Tento článek popisuje podporu offline aplikací a různé možnosti trvalého úložiště, které nabízí nadcházející standard HTML5. Pro ilustraci diskutovaných funkcí je k dispozici výuková příloha.

Vzdělávací aplikace

Školicí aplikace Contact Manager poskytuje kontrolu kontaktní informace(jména, adresy, telefonní čísla). Podporuje online režim, offline režim a jednoduchá funkce synchronizace dat, která umožňuje synchronizaci lokálních změn dat se serverem po přepnutí do online režimu. Když je aplikace offline, data se ukládají do místního trvalého úložiště. Popsaná aplikace podporuje čtyři základní funkce trvalého úložiště – vytvoření/čtení/aktualizace/mazání (CRUD) – v režimu online i offline.

Architektura

Datový model

Datový model se skládá ze dvou datových objektů, kontaktu a stavu (viz). Tabulka kontaktů obsahuje aktuální kontaktní informace; tabulka stavů obsahuje hodnoty slovníku pro seznam pro výběr stavu.

Obrázek 2. Datový model

Serverové rozhraní

Rozhraní serveru se skládá ze dvou servletů: ContactServlet a DictionaryServlet. Tyto servlety jsou popsány v (implementace těchto servletů, stejně jako souvisejících obchodních služeb a poskytovatelů dat, je nad rámec tohoto článku).

Tabulka 1. Popis servletů
Název servletuÚkonMožnostiPopis
DictionaryServlet code>getstatesŽádnýVrátí pole stavů v formát JSON(JavaScript Object Notation).
ContactServletgetallcontactsŽádnýVrátí pole záznamů kontaktů ve formátu JSON.
ContactServletvymazatcontactId - Identifikátor (ID) kontaktu, který má být smazán.Smaže zadaný záznam Kontakt; vrací objekt JSON s booleovským příznakem, který slouží jako indikátor úspěchu operace.
"("výsledek": pravda/nepravda")
ContactServletUložit
  • contactId - Identifikátor (ID) kontaktu, který má být uložen (pokud je hodnota větší než nula, dojde k operaci aktualizace).
  • firstName – hodnota pole názvu.
  • lastName – hodnota pole příjmení.
  • ulice1 – Hodnota pole ulice 1.
  • street2 – Hodnota pole ulice 2.
  • město - Hodnota pole města.
  • state – Hodnota pole stavu.
  • zipCode – Hodnota pole zipCode.
Vrátí objekt JSON s booleovským příznakem, který slouží jako indikátor úspěšnosti operace, a novým nebo aktualizovaným ID kontaktu.
"("contactId": , "výsledek": "}

Volání rozhraní serveru

Obrázek 3. Aplikace Contact Manager

JavaScript moduly

Aplikace se skládá ze čtyř speciálních modulů JavaScript:

  • core.js – podporuje normální funkce JavaScript a je používán jinými moduly.
  • formEvents.js – Poskytuje obslužné rutiny událostí pro tlačítka a formuláře. Směruje databázové operace ke správnému poskytovateli dat podle online nebo offline režimu.
  • onlinedb.js – podporuje funkce pro interakci se serverem v režimu online.
  • offlinedb.js podporuje funkce pro místní ukládání dat.

Kromě toho všechny moduly používají Nejnovější verze jQuery knihovny pro sledování dat, pro asynchronní webové požadavky a pro podporu dynamického HTML. Klient komunikuje se serverem pomocí JSON.

Manifest offline aplikace

Možnosti offline HTML5 poskytují ukládání do mezipaměti statické soubory a zdroje. Soubor manifestu offline aplikace (.appcache) je nezbytný soubor pro podporu offline aplikace pro webovou aplikaci. Soubor manifestu obsahuje následující informace.

  • Zdroje a stránky dostupné offline.
  • Zdroje pouze online.
  • U zdrojů, které nejsou dostupné offline, se zobrazí záložní stránka.

Soubor manifestu se skládá ze tří částí: CACHE, NETWORK, FALLBACK. Stránky a prostředky uvedené v sekci CACHE jsou ukládány do mezipaměti místní systém. Stránky a zdroje uvedené v části SÍŤ se nikdy neukládají do mezipaměti a jsou dostupné pouze online. Stránka zadaná v sekci FALLBACK se zobrazí, pokud požadovaná stránka není dostupná offline. Symbol (*) v sekci NETWORK označuje, že všechny ostatní stránky a servlety jsou dostupné pouze online. Pokud chybí znak (*), volání servletu se nezdaří (i v online režimu). B zobrazuje soubor manifestu pro aplikaci Contact Manager.

Výpis 8. Manifest offline aplikace
CACHE MANIFEST # Revize 1 CACHE: default.html list.html scripts/core.js scripts/localdb.js scripts/onlinedb.js scripts/formEvents.js http://code.jquery.com/jquery-1.7.2.min .js NETWORK: * FALLBACK: /offline.html

Důležité informace pro práci s offline aplikacemi.

  • Soubor manifestu offline aplikace extension.appcache musí být namapován na typ MIME text/cache-manifest . V Apache Tomcat je tento úkol vyřešen přidáním prvku mime-mapping do souboru web.xml servery(ne v souboru web.xml webové aplikace). Většina prohlížečů tiše ignoruje manifest offline aplikace, pokud je její typ MIME nesprávný.
  • Pokud je přítomen soubor manifestu offline aplikace, vždy se použije prostředek uložený v mezipaměti místního systému (i když je online).
  • Místní prostředek je aktualizován pouze v případě, že se změní soubor manifestu offline aplikace; obvykle změnou čísla verze v komentářích v souboru manifestu. Změny prostředků HTML nebo prostředků CSS se ve webovém prohlížeči neprojeví, dokud není upraven soubor manifestu aplikace.
  • Každá stránka, která podporuje použití offline, musí mít následující řádek:

Online nebo offline aplikace

JavaScript vám umožňuje zjistit, zda je aplikace online nebo offline. Tento úkol je řešen pomocí booleovské proměnné navigator.onLine. Pokud je aplikace online, vrátí tato proměnná hodnotu True.

Události formuláře (online a offline zpracování)

Správce kontaktů používá stejný formulář online i offline. Aby toto řešení fungovalo, jsou nutné obslužné rutiny událostí formuláře a tlačítka. Zkontrolujte hodnotu proměnné navigator.onLine a určete, která operace má být volána (místní nebo online). Je zobrazen příklad načítání kontaktních informací.

Výpis 9. Načítání dat (v události onLoad)
if (navigator.onLine) ( // výběrový seznam musí být vyplněn před synchronizací dat // seznam je aktualizován z online dictionary later populateOfflineStates(); setStatusText("Synchronizace kontaktních dat se serverem..."); synchronizeContacts(); setStatusText("Načítání dat slovníku ze serveru..."); populateOnlineStates(); setStatusText("Načítání kontaktních údajů ze serveru..."); loadOnlineContacts(); ) else ( alert("Momentálně jste offline."); populateOfflineStates(); setStatusText("Načítání kontaktních údajů z místní úložiště..."); loadOfflineContacts(); )

Synchronizace dat

V online režimu všechny operace CRUD používají servlety pro operace vytváření, aktualizace a odstraňování. Pokud se online databáze změní, aktualizuje se také místní mezipaměť.

V režimu offline všechny operace CRUD používají k uložení změn místního poskytovatele dat. Po obnovení připojení k serveru se provedou následující akce.

  • Všechny záznamy, které byly vytvořeny v lokálním systému, jsou uloženy na serveru.
  • Všechny záznamy, které byly změněny v lokálním systému, jsou aktualizovány na serveru.
  • Všechny položky, které byly odstraněny v místním systému, jsou odstraněny na serveru.

Úplný text metody synchronizace je uveden v . Proces synchronizace používá stejné online funkce pro operace vytváření, aktualizace a odstraňování. Prvním krokem je iterace místní záznamy pomocí funkce jQuery $.each.

Záznamy, které byly aktualizovány nebo vytvořeny v místním systému, jsou označeny vlastností isDirty. Operace uložení je identifikována jako nová, pokud má její jedinečný identifikátor záznamu negativní význam(tj. základna Data MySQL tomu nepřikládal žádný význam). Záznamy, které byly odstraněny v lokálním systému, jsou označeny vlastností isDeleted.

Výpis 10. Synchronizace offline změn se serverem
var záznamyAktualizováno = 0; var recordsCreated = 0; var zaznamyDeleted = 0; $.each(data, function(i,item)( if (item.isDeleted) ( deleteOnlineContact(item.id, true); recordsDeleted++; ) else if (item.isDirty && !item.isDeleted) ( $("vstup" ).hodnota = item.id; $("vstup").hodnota = item.firstName; $("vstup").hodnota = item.prijmeni.value = item.street1"; .value = item.street2; $("vstup").hodnota = item.city; $("select").hodnota = item.state; $("vstup").value = item.zipCode = $ ("#editContactForm").serialize(postEditedContact(dataString, true if (item.id > 0) ( recordsUpdated++; ) else ( recordsCreated++; ) )); var msg = "Přehled synchronizace\n\tZáznamy aktualizovány: " + záznamyAktualizovány + "\n\tZáznamy vytvořeny: " + záznamy Vytvořeny +"\n\tZáznamy smazány: " + záznamy Smazány; alert(msg);

Nejnovější data jsou načtena z databáze pomocí operace getcontacts a zobrazena. To bude odrážet veškeré změny provedené ostatními uživateli. Tato data jsou poté uložena v lokálním systému, aby byla zajištěna jejich dostupnost offline.

Závěr

Na příkladu vzdělávací aplikace článek demonstroval doporučení pro podporu online a offline provozních režimů. Konzistentní uživatelské zkušenosti je dosaženo použitím stejné stránky HTML pro online i offline režimy a voláním příslušných online/offline poskytovatelů dat v obslužných rutinách událostí formuláře podle aktuálního stavu (online nebo offline).

Algoritmus synchronizace dat poskytuje spolehlivý základ; synchronizuje výsledky offline vytváření, mazání a úpravy záznamů. Nutno však podotknout, že toto programový kód ještě není připraven k použití v produkčním prostředí. Například nezpracovává konflikty, když stejný záznam upravíte vy v místním systému a jiný uživatel na serveru.

naposledy upravil(a).

Ahoj.

Již delší dobu jsem si všiml, že možnost „Uložit místní data do ukončení prohlížeče“ v části „Cookies“ v nastavení zabezpečení Opery nefunguje. Někdy smaže soubory cookie, někdy ne, nějak náhodou.

Snadná kontrola. Dali jsme výše uvedenou vlajku. Operu používáme několik dní. Vypněte internet. Spusťte Operu. Otevřeme seznam souborů cookie a zjistíme, že žádné nejsou smazané záznamy! Spořádané mazání cookies funguje, automatické čištění je na hovno! To znamená, že veškerá anonymita jde do háje. VPN přirozeně ztrácí smysl.

Může k tomu někdo něco říct?

P.S. Mám názor, že se snaží zničit Operu. Není tu žádný pocit pokroku.

  • Ostatní uživatelé měli dříve stejné problémy. Číst...

    Četl jsem to. Děkuji. Doporučuje se nainstalovat doplněk. Okamžitě jsem v něm našel chybu: nevymaže historii stahování, i když taková možnost existuje. Pokud jde o bezpečnost, určitě nepoužiji nějaký obskurní doplněk.

    Myslel jsem, že to možná ovlivňují nějaké jiné vlajky. Protože účel a fungování mnoha vlajek mi není jasné. Například „Povolit nedávno uzavřeným webům dokončit příjem a přenos dat.“

    Doufám, že je problém s mazání cookies oni rozhodnou. Pokud jsem si všiml, pochází z Opery 12.

  • Příčinu tohoto problému jsme již našli. Všichni vinili prohlížeč Opera, ale ukázalo se, že je to chyba samotného Chromia....

    Takže přemýšlím o Opeře, protože mám Operu 12 na testování a je to stejné svinstvo.

    Je zvláštní vidět takové chyby v 50. verzi.

    Co je uvnitř Opery, je jistě zajímavé. Ale ten produkt se jmenuje Opera, ne Chromium nebo tak nějak

  • operasilver40 naposledy upravil(a).

    Vytvoření aplikace seznamu úkolů je obvykle první aplikací, kterou vytvoříte, když se učíte JavaScript, ale problém všech těchto aplikací je, že když stránku znovu načtete, všechny tyto seznamy zmizí.
    Existuje jednoduché řešení – pomocí lokálního úložiště. Výhodou lokálního úložiště je, že můžete ukládat bity dat na počítač uživatele a když se stránka znovu načte, všechny seznamy úkolů tam stále jsou.

    Co je místní úložiště?

    Lokální úložiště dat je součástí úložné sítě, která je sama o sobě součástí specifikace HTML5. Existují dvě možnosti uložení dat ve specifikaci:

    • Místní úložiště: Ukládá data bez data vypršení platnosti a tuto možnost použijeme, protože chceme, aby naše záznamy zůstaly na stránce co nejdéle.
    • Úložiště relace: Ukládá data pouze pro jednu relaci, takže pokud uživatel zavře kartu a znovu ji otevře, všechna jeho data budou ztracena.

    Zjednodušeně řečeno, všechna webová úložiště ukládají páry klíč/hodnota s názvem lokálně a na rozdíl od souborů cookie se tato data ukládají, i když zavřete prohlížeč nebo vypnete počítač.

    Pokud uvažujeme o seznamu úkolů, pak budete potřebovat následující:

    • Vstupní prostor, kde můžete zveřejnit náš seznam
    • Tlačítko Enter pro přidání seznamu
    • Tlačítko pro vymazání celého deníku
    • Neuspořádaný seznamový kontejner, kde bude náš seznam umístěn do seznamu prvků
    • A nakonec potřebujeme kontejner DIV, abychom zobrazili upozornění, když se pokusíte zadat prázdný úkol.

    Naše HTML by tedy mělo vypadat nějak takto:

    Toto je docela standardní HTML kontejner a s naším JavaScriptem můžeme celou věc naplnit dynamickým obsahem.

    Protože v tomto příkladu použijeme JQuery, měli byste jej také zahrnout do dokumentu HTML.

    JavaScript

    Pokud přemýšlíme o struktuře jednoduché aplikace „seznam úkolů“, první věc, kterou musíme udělat, je zkontrolovat, zda je vstup prázdný, když uživatel klikne na tlačítko „přidat“ nebo „ověřit“:

    $("#add").click(function() ( var Description = $("#description").val(); //pokud je úkol prázdný if($("#description").val( ) == "") ( $("#alert").html(" Varování!Úkol jste nechali prázdný"); $("#alert").fadeIn().delay(1000).fadeOut(); return false; )

    Jediné, co jsme udělali, bylo otestovat kliknutí na tlačítko Přidat a provést jednoduchý test, abychom zjistili, zda uživatel zadání něčím vyplnil. Pokud ne, objeví se výstraha div a zůstane po dobu 1000 ms a poté zmizí.

    Další věc, kterou musíme udělat, je vložit položku seznamu s hodnotou do vstupního řádku a to uvedeme tak, že když uživatel přidá úkol, bude vždy na začátku seznamu a poté seznam uložíme položku do místního úložiště, takto:

    // přidání položky seznamu $("#todos").prepend("

  • "+Popis+"
  • "); // smaže vše, co je na vstupu $("#form").reset(); var todos = $("#todos").html(); localStorage.setItem("todos", todos); return Nepravdivé;

    Jak můžete vidět, toto je docela standardní jQuery a pokud jde o místní úložiště, musíme uložit klíč a hodnotu. Klíčem je jméno, které si dáme, v tomto případě jej nazveme jednoduše „Todos“, pak musíme definovat, co chceme uložit a v v tomto případě toto je všechno HTML, které je uvnitř neuspořádaného seznamu Todos. Jak vidíte, vše jsme zachytili pomocí jQuery a nakonec vrátili false, aby formulář neselhal a naše stránka se neobnovovala.

    Naším dalším krokem je zkontrolovat, zda máme něco uloženého v místním úložišti. Pokud existuje, musíme jej umístit na stránku, protože jsme dali našemu klíči jméno „todos“, musíme zkontrolovat jeho existenci. Takhle:

    // pokud máme něco v místním úložišti, že if(localStorage.getItem("todos")) ( $("#todos").html(localStorage.getItem("todos")); )

    Pokud naši aplikaci otestujete a stránku znovu načtete, uvidíte, že již funguje. Jediné, co musíme udělat, je vytvořit funkci, která bude zodpovědná za vyčištění celého seznamu. Vymažeme veškeré místní úložiště, znovu načteme stránku, aby se naše změna projevila, a poté vrátíme hodnotu „false“, abychom zabránili hašování před adresou URL takto:

    // vymaže veškeré místní úložiště $("#clear").click(function() ( window.localStorage.clear(); location.reload(); return false; ));

    Celý kód jak následuje:

    $("#add").click(function() ( var Description = $("#description").val(); if($("#description").val() == "") ( $( "#alert").html(" Varování!Úkol jste nechali prázdný"); $("#alert").fadeIn().delay(1000).fadeOut(); return false; ) $("#todos").prepend("

  • "+Popis+"
  • "); $("#form").reset(); var todos = $("#todos").html(); localStorage.setItem("todos", todos); return false; )); if(localStorage .getItem("todos")) ( $("#todos").html(localStorage.getItem("todos")); ) $("#clear").click(function() ( window.localStorage.clear( umístění.reload();

    Podpora prohlížeče

    Podpora Web Storage je na specifikace HTML5 docela dobrá, podporují ji všechny hlavní prohlížeče a dokonce i IE8.

    Překlad: Vlad Merzhevich

    Trvalé místní úložiště je jednou z oblastí, kde mají klientské aplikace výhody oproti serverovým aplikacím. Pro aplikace jako např operační systém, poskytuje abstrakční vrstvu pro ukládání a načítání dat, jako je nastavení nebo stav provádění. Tyto hodnoty mohou být uloženy v registru, souborech INI, souborech XML nebo jinde v závislosti na principech platformy. Pokud vaše klientská aplikace potřebuje lokální úložiště pro více než jen pár klíč/hodnota, můžete vložit vlastní databázi, přijít s vlastním formátem souborů nebo libovolným počtem dalších řešení.

    Historicky webové aplikace neměly žádný z těchto luxusů. Soubory cookie byly vynalezeny na počátku historie internetu a lze je použít pro trvalé místní úložiště malé objemy data. Ale mají tři potenciální nevýhody:

    • Soubory cookie jsou součástí každého požadavku HTTP, čímž zpomalují vaši webovou aplikaci zbytečným přenosem stejných dat znovu a znovu;
    • cookies jsou součástí každého požadavku HTTP při přenosu dat přes internet v nešifrované podobě (i když je celá webová aplikace přenášena přes SSL);
    • Soubory cookie jsou omezeny na přibližně 4 kB dat – dost na zpomalení vaší aplikace (viz výše), ale ne dost na to, aby byly užitečné.

    Zde je to, co opravdu chceme:

    • dostatek úložného prostoru;
    • práce na straně klienta;
    • vzít v úvahu obnovení stránky;
    • žádné odesílání na server.

    Před HTML5 všechny pokusy o dosažení tohoto cíle nakonec různými způsoby selhaly.

    Stručná historie místního úložiště před HTML5

    Na začátku byl pouze jeden Internet Explorer. Alespoň to Microsoft chtěl, aby si svět myslel. Za tímto účelem v rámci I Velká válka prohlížeče Microsoft vynalezl spoustu věcí a zahrnul je do svého prohlížeče Internet Explorer, který ukončil válku. Jedna z těchto věcí se jmenovala DHTML Behaviors a jedna z těchto věcí se jmenovala userData.

    UserData umožňuje webové stránce uložit až 64 KB dat na doménu v hierarchické struktuře podobné XML. Důvěryhodné domény, jako jsou intranetové stránky, mohou uložit desetkrát více. A ejhle, 640 KB by mělo stačit všem. IE neposkytlo žádný způsob, jak tyto konvence změnit, takže neexistuje způsob, jak zvýšit množství dostupné paměti.

    V roce 2002 společnost Adobe představila funkci ve Flashi 6, která byla neúspěšná a zavádějící pojmenovaná „Flash Cookies“. V Flash prostředí tato schopnost je lépe známá jako místní sdílené objekty (LSO). Stručně řečeno, umožňuje Flash objektům uložit až 100 KB dat na doménu. Brad Neuberg, který vyvinul raný prototyp mostu mezi Flashem a JavaScriptem, jej nazval AMASS (AJAX Massive Storage System), ale byl omezen některými zvláštnostmi návrhu Flash. V roce 2006, se zavedením ExternalInterface ve Flash 8, se přístup k LSO přes JavaScript stal řádově jednodušším a rychlejším. Brad přepsal AMASS a integroval jej do populární sady nástrojů Dojo pod alias dojox.storage. Flash poskytuje každé doméně 100 kb úložného prostoru „zdarma“. Uživateli navíc na požádání nabízí řádově navýšit objem úložiště (1 MB, 10 MB atd.).

    if (Modernizr.localstorage) (
    // window.localStorage je k dispozici!
    ) jinak (
    // žádná nativní podpora pro úložiště HTML5
    }

    Použití úložiště HTML5

    Úložiště HTML5 je založeno na názvech párů klíč/hodnota. Uložíte informace na základě názvu klíče a poté můžete tato data načíst pomocí stejného klíče. Název klíče je řetězec. Data mohou být libovolného typu, který JavaScript podporuje, včetně řetězců, booleanů, celých čísel nebo čísel s plovoucí desetinnou čárkou. Ve skutečnosti jsou však data uložena jako řetězec. Pokud ukládáte a načítáte jiné než řetězce, budete muset použít funkce jako parseInt() nebo parseFloat() k převodu přijatých dat na správné typy JavaScriptu.

    Rozhraní úložiště (
    Získat přes getItem(key);
    Nastavit přes setItem(klíč, data);
    };

    Volání setItem() s existujícím názvem klíče tiše přepíše předchozí hodnotu. Volání getItem() s neexistujícím klíčem vrátí NULL namísto vyvolání výjimky.

    Stejně jako ostatní JavaScript objekty k objektu localStorage můžete přistupovat jako k asociativnímu poli. Místo použití metod getItem() a setItem() můžete jednoduše zadat hranaté závorky. Například tento fragment kódu

    var foo = localStorage.getItem("bar");
    // ...
    localStorage.setItem("bar", foo);

    lze přepsat pomocí syntaxe hranatých závorek:

    var foo = localStorage["bar"];
    // ...
    localStorage["bar"] = foo;

    Existují také metody pro smazání hodnot podle názvu klíče a také pro vymazání celého úložiště (to znamená smazání všech klíčů a hodnot najednou).

    Rozhraní úložiště (
    Odebrat pomocí removeItem(key);
    Průhledná();
    }

    Volání removeItem() s neexistujícím klíčem nevrátí nic.

    Nakonec je tu vlastnost získat celkový počet hodnot v oblasti úložiště a iterovat všechny klíče podle indexu (získá název každého klíče).

    Rozhraní úložiště (
    délka
    Get key(nezáporné celé číslo);
    }

    Pokud při volání key() není index v rozsahu od 0 do (délka-1), funkce vrátí hodnotu null .

    Monitorování úložného prostoru HTML5

    Pokud chcete programově sledovat změny úložiště, musíte zachytit událost úložiště. K této události dochází u objektu okna, když jsou volány setItem() , removeItem() nebo clear() a něco se změní. Pokud například nastavíte existující hodnotu nebo zavoláte clear(), když nejsou k dispozici žádné klíče, událost se nespustí, protože se úložná oblast ve skutečnosti nezměnila.

    Událost úložiště je podporována všude tam, kde běží objekt localStorage, včetně aplikace Internet Explorer 8. IE 8 nepodporuje standard W3C addEventListener (ačkoli bude nakonec přidán v IE 9), takže pro zachycení události úložiště musíte zkontrolovat, který modul událostí podporuje jej prohlížeč (pokud jste to již dříve provedli u jiných událostí, můžete přeskočit na konec této části). Zachycení události úložiště funguje stejně jako zachycení jiných událostí. Pokud dáváte přednost použití jQuery nebo jiného JavaScript knihovna Chcete-li zaregistrovat obslužné rutiny událostí, můžete to provést také pomocí úložiště.

    if (window.addEventListener) (
    window.addEventListener("úložiště", handle_storage, false);
    ) jinak (
    window.attachEvent("onstorage", handle_storage);
    };

    Funkce zpětné volání handle_storage bude voláno s objektem StorageEvent, s výjimkou aplikace Internet Explorer, kde jsou události uloženy v window.event .

    funkce handle_storage(e) (
    if (!e) ( e = okno.událost; )
    }

    V tomto případě bude proměnná e objektem StorageEvent, který má následující užitečné vlastnosti.

    *Poznámka: Vlastnost url se původně jmenovala uri a některé prohlížeče tuto vlastnost podporovaly před změnou specifikace. Chcete-li zajistit maximální kompatibilitu, měli byste zkontrolovat, zda existuje vlastnost url, a pokud ne, zkontrolujte místo toho vlastnost uri.

    Událost úložiště nelze zrušit a neexistuje způsob, jak zastavit změnu uvnitř zpětného volání handle_storage. Je to jen způsob, jak vám prohlížeč říká: „Hej, právě se to stalo. Nedá se nic dělat, jen jsem chtěl, abys to věděl."

    Omezení v současných prohlížečích

    Když jsem mluvil o historii lokálního úložiště pomocí pluginů třetích stran, zmínil jsem omezení každé techniky. Vzpomněl jsem si, že jsem neřekl nic o omezeních dnes již standardního úložiště HTML5. Dám vám odpovědi a pak je vysvětlím. Odpovědi v pořadí podle důležitosti jsou „5 megabajtů“, „QUOTA_EXCEEDED_ERR“ a „žádné“.

    „5 megabajtů“ – kolik úložného prostoru je poskytováno ve výchozím nastavení. Tato hodnota je překvapivě konzistentní ve všech prohlížečích, ačkoli ve specifikaci HTML5 není uvedena jako nic jiného než návrh. Musíte pochopit, že ukládáte řetězce, nikoli data v původním formátu. Pokud ukládáte mnoho celých čísel nebo čísel s plovoucí desetinnou čárkou, může být rozdíl v reprezentaci velký. Každá číslice v čísle s plovoucí desetinnou čárkou je uložena jako znak, nikoli v obvyklé reprezentaci takových čísel.

    „QUOTA_EXCEEDED_ERR“ je výjimka, kterou obdržíte, pokud překročíte kvótu 5 MB. „Ne“ je odpověď na další zřejmou otázku: „Mohu uživatele požádat o více úložného prostoru? V době psaní tohoto článku prohlížeče neimplementují žádný mechanismus, který by weboví vývojáři mohli požadovat více místa pro skladování. Některé prohlížeče (jako je Opera) umožňují uživateli řídit kvóty úložiště na základě jednotlivých stránek, ale to je čistě iniciativa uživatele a nesouvisí s ničím, co jako vývojář můžete zabudovat do své webové aplikace.

    Úložiště HTML5 v akci

    Pojďme se podívat na úložiště HTML5 v akci. Vraťme se znovu k tomu, který jsme postavili v kapitole o kreslení. U této hry je malý problém: pokud uprostřed hry zavřete okno prohlížeče, přijdete o výsledky. Ale s úložištěm HTML5 můžeme herní proces uložit lokálně, v samotném prohlížeči. Otevřete ukázku, proveďte několik pohybů, zavřete kartu prohlížeče a znovu ji otevřete. Pokud váš prohlížeč podporuje úložiště HTML5, ukázková stránka si magicky zapamatuje přesnou pozici ve hře, včetně počtu tahů, které jste provedli, pozice každé figurky na herním plánu a dokonce i vybrané figurky.

    Jak to funguje? Pokaždé, když dojde ve hře ke změně, zavoláme tuto funkci.

    funkce saveGameState() (

    localStorage["halma.game.in.progress"] = gGameInProgress;
    for (var i = 0; i< kNumPieces; i++) {
    localStorage["halma.piece." + i + ".řádek"] = gKusy[i].řádek;
    localStorage["halma.piece." + i + ".sloupec"] = gPieces[i].sloupec;
    }
    localStorage["halma.selectedpiece"] = gSelectedPieceIndex;
    localStorage["halma.selectedpiecehasmoved"] = gSelectedPieceHasMoved;
    localStorage["halma.movecount"] = gMoveCount;
    vrátit true;
    }

    Jak můžete vidět, objekt localStorage se používá k ukládání průběhu hry (gGameInProgress, booleovský typ). Dále jsou všechny kusy roztříděny (gPieces, pole JavaScript) a ukládá pro každý řádek a sloupec. Poté se uloží některé další herní stavy, včetně vybrané figurky (gSelectedPieceIndex, celé číslo), figurky, která je uprostřed dlouhé série skoků (gSelectedPieceHasMoved, boolean) a celkového počtu provedených tahů (gMoveCount, an celé číslo).

    Když se stránka načte, místo automatického volání funkce newGame(), která by vrátila všechny proměnné na jejich původní hodnoty, zavoláme restoreGame() . Funkce restoreGame() používá úložiště HTML5 ke kontrole stavu hry v místním úložišti. Pokud je přítomen, obnoví hodnoty pomocí objektu localStorage.

    function restoreGame() (
    if (!supportsLocalStorage()) ( return false; )
    gGameInProgress = (localStorage["halma.game.in.progress"] == "true");
    if (!gGameInProgress) ( return false; )
    gPieces = new Array(kNumPieces);
    for (var i = 0; i< kNumPieces; i++) {
    var row = parseInt(localStorage["halma.piece." + i + ".row"]);
    var column = parseInt(localStorage["halma.piece." + i + ".column"]);
    gPieces[i] = new Cell(řádek, sloupec);
    }
    gNumPieces = kNumPieces;
    gSelectedPieceIndex = parseInt(localStorage["halma.selectedpiece"]);
    gSelectedPieceHasMoved = localStorage["halma.selectedpiecehasmoved"] == "true";
    gMoveCount = parseInt(localStorage["halma.movecount"]);
    padací deska();
    vrátit true;
    }

    Nejdůležitější částí této funkce je upozornění, které jsem zmínil dříve v této kapitole a zde se budu opakovat: data jsou uložena jako řetězce. Pokud ukládáte něco jiného než řetězce, budete je muset po obdržení převést. Například příznak, že probíhá hra (gGameInProgress), je typu Boolean. Ve funkci saveGameState() jej jednoduše uložíme a o datový typ se nestaráme.

    localStorage["halma.game.in.progress"] = gGameInProgress;

    Ale ve funkci restoreGame() se musíme podívat na hodnotu získanou z místního úložiště jako na řetězec a ručně vytvořit vlastní booleovskou hodnotu.

    gGameInProgress = (localStorage["halma.game.in.progress"] == "true");

    Podobně je počet tahů uložen v gMoveCount jako celé číslo, ve funkci saveGameState() jej jednoduše uložíme.

    localStorage["halma.movecount"] = gMoveCount;

    Ale ve funkci restoreGame() musíme hodnotu převést na celé číslo pomocí vestavěné funkce parseInt() JavaScriptu.

    gMoveCount = parseInt(localStorage["halma.movecount"]);

    Mimo páry klíč/hodnota: Konkurenční vize

    Přestože v historii bylo mnoho triků a řešení, současný stav úložiště HTML5 je překvapivě zdravý. Nové API byl standardizován a zahrnut do všech hlavních prohlížečů, platforem a zařízení. Pro webového vývojáře to není něco, co nevidíte každý den, že? Ale je v tom víc než „5 megabajtů párů klíč/hodnota“ a budoucnost trvalého lokálního úložiště je... jak bych to řekl... no, řekněme, že je to konkurenční vize.

    Jedna vize je zkratka, kterou už znáte – SQL. V ROCE 2007 rok Google spustila Gears, plugin pro různé prohlížeče s otevřeným zdrojový kód, který obsahuje vestavěnou databázi založenou na SQLite. Tento raný prototyp později ovlivnil vytvoření specifikace webové SQL databáze. Základna Webová data SQL (dříve známý jako „WebDB“) poskytuje tenký obal kolem databáze SQL, který vám umožňuje provádět následující věci z JavaScriptu:

    openDatabase("dokumenty", "1.0", "Místní úložiště dokumentů", 5*1024*1024, funkce (db) (
    db.changeVersion("", "1.0", funkce (t) (
    t.executeSql("VYTVOŘIT TABULKU docids (id, jméno)");
    ), chyba);
    });

    Jak vidíte, většina akcí je v souladu s metodou ExecuteSQL. Tento řetězec může podporovat jakýkoli příkaz SQL, včetně SELECT, UPDATE, INSERT a DELETE. Je to jako programování databází na straně serveru, kromě toho, že to děláte pomocí JavaScriptu! Ó radost!

    Specifikace databáze Web SQL byla implementována ve čtyřech prohlížečích a platformách.

    Podpora webové SQL databáze
    TJ. Firefox Safari Chrome Opera iPhone Android
    4.0+ 4.0+ 10.5+ 3.0+ 2.0+

    Samozřejmě, pokud jste ve svém životě používali více než jednu databázi, víte, že „SQL“ je spíše marketingový termín než pevný a rychlý standard (někdo by mohl říkat totéž o HTML5, ale to nevadí) . Samozřejmě existuje aktuální specifikace SQL (nazývaná SQL-92), ale na světě neexistuje žádný databázový server, který by vyhovoval pouze této specifikaci. Existuje Oracle SQL, Microsoft SQL, SQL v MySQL, SQL v PostgreSQL, SQL v SQLite. Ve skutečnosti každý z těchto produktů časem přidává nové. SQL funkce, takže ani říct "SQL v SQLite" nestačí. Měli byste říci „verze SQL, která je dodávána s verzí SQLite X.Y.Z“.

    To vše nás přivádí k dalšímu prohlášení o vyloučení odpovědnosti, které je aktuálně uvedeno na začátku specifikace webového SQL.

    Specifikace se dostala do slepé uličky: všichni zainteresovaní vývojáři používají SQL na straně serveru (SQLite), ale potřebujeme několik nezávislých implementací, abychom se posunuli směrem ke standardizaci. Zatímco ostatní vývojáři mají zájem o implementaci této specifikace, popis dialektu SQL byl ponechán jako pouhý odkaz na Sqlite, což není pro standard přijatelné.

    Na tomto pozadí vám povím o další konkurenční vizi pro pokročilé, trvalé místní úložiště pro webové aplikace: Indexed Database API, dříve známé jako „WebSimpleDB“, nyní s láskou nazývané IndexedDB.

    Indexed Database API poskytuje to, čemu se říká objektové úložiště, s mnoha nápady vypůjčenými z databází SQL. Existují "databáze" se "záznamy", každý záznam má určité množství„pole“. Každé pole má určitý typ data, která jsou určena při vytváření databáze. Můžete vybrat podmnožinu záznamů a poté je vypsat pomocí „kurzoru“. Změny v úložišti objektů jsou zpracovávány pomocí „transakcí“.

    Pokud jste někdy programovali SQL databáze, tyto pojmy jsou vám pravděpodobně známé. Hlavní rozdíl je v tom, že objektové úložiště nemá strukturovaný jazykžádosti. Nepíšete podmínku jako "SELECT * from USERS kde AKTIVNÍ = "Y"". Místo toho používáme metody poskytované úložištěm objektů k otevření databáze USERS, k výčtu záznamů, filtrování našich záznamů a k získání hodnoty každého pole zbývajících záznamů používáme metody přístupového objektu. První prohlídka IndexedDB dobrý průvodce o tom, jak funguje IndexedDB a jak se IndexedDB srovnává s webovým SQL.

    V době psaní tohoto článku byl IndexedDB implementován pouze v beta verzi Firefoxu 4. Naproti tomu Mozilla uvedla, že nikdy nebude implementovat webové SQL. Google uvedl, že zvažuje podporu IndexedDB pro Chromium a Google Chrome. A dokonce i Microsoft řekl, že IndexedDB je „skvělé řešení pro web“.

    Co můžete dělat jako webový vývojář s IndexedDB? Na tento moment prakticky nic kromě ukázek techniky. V roce? Možná.



    
    Horní