{"id":288,"date":"2024-05-21T10:23:26","date_gmt":"2024-05-21T08:23:26","guid":{"rendered":"https:\/\/blog.sutilweb.eu\/?page_id=288"},"modified":"2024-05-21T10:23:26","modified_gmt":"2024-05-21T08:23:26","slug":"67-api-html-web-storage","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/lenguajes\/html5\/html5-manual\/67-api-html-web-storage\/","title":{"rendered":"67. API HTML Web Storage"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Que es Web Storage?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Con <strong>Web Storage<\/strong>, las aplicaciones web pueden almacenar datos localmente dentro del navegador del usuario.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de HTML5, los datos de la aplicaci\u00f3n ten\u00edan que almacenarse en <strong>cookies<\/strong>, incluidas en cada solicitud del servidor. <strong>Web Storage<\/strong> es m\u00e1s seguro y se pueden almacenar grandes cantidades de datos localmente, sin afectar el rendimiento del sitio web.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A diferencia de las <strong>cookies<\/strong>, el l\u00edmite de almacenamiento es mucho mayor (al menos 5 MB) y la informaci\u00f3n nunca se transfiere al servidor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Web Storage<\/strong> es por origen (por dominio y protocolo). Todas las p\u00e1ginas, desde un origen, pueden almacenar y acceder a los mismos datos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Objetos HTML Web Storage<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">HTML provee dos objetos para almacenamiento de datos en el cliente<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>window.localStorage<\/em><\/strong>: almacena datos sin fecha de caducidad<\/li>\n\n\n\n<li><strong><em>window.sessionStorage<\/em><\/strong>: almacena datos para una sesi\u00f3n (los datos se pierden cuando se cierra la pesta\u00f1a del navegador)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de usar <strong>Web Storage<\/strong>, comprueba la compatibilidad del navegador con <strong><em>localStorage<\/em> <\/strong>y <strong><em>sessionStorage<\/em><\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">if&nbsp;(typeof(Storage) !==&nbsp;\"undefined\") {\n&nbsp;&nbsp;\/\/&nbsp;<em>Code for localStorage\/sessionStorage.<\/em>\n}&nbsp;else&nbsp;{\n&nbsp;&nbsp;\/\/ Sorry! No Web Storage support..\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">El objeto localStorage<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El objeto <strong><em>localStorage<\/em> <\/strong>almacena los datos sin fecha de caducidad. Los datos no se eliminar\u00e1n cuando se cierre el navegador y estar\u00e1n disponibles al d\u00eda, semana o a\u00f1o siguiente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"es\"&gt;\n&lt;head&gt;\n\n&lt;\/head&gt;\n&lt;body&gt;\n\t&lt;div id=\"result\"&gt;&lt;\/div&gt;\n\t\n\t&lt;script&gt;\n\t\/\/ \tCHECKEAR SI EL NAVEGADOR SOPORTA WEB STORAGE\n\tif(typeof(Storage) !=\"undefined\"){\n\t\t\/\/ ALMACENA\n\t\tlocalStorage.setItem(\"lastname\", \"Paredes\");\n\t\t\/\/ RECUPERA\n\t\tdocument.getElementById(\"result\").innerHTML =\n\t\tlocalStorage.getItem(\"lastname\");\n\t} else {\n\t\tdocument.getElementById(\"result\").innerHTML =\n\t\t\"Lo sentimos, tu navegador no soporta Web Storage\"\n\t}\n\t&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Ejm explicado<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Crea un par de nombre\/valor de almacenamiento local con nombre=\u00bblastname\u00bb y valor=\u00bbParedes\u00bb<\/li>\n\n\n\n<li>Recupera el valor de \u00abapellido\u00bb e ins\u00e9rtalo en el elemento con id=\u00bbresult\u00bb<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">El ejemplo anterior tambi\u00e9n podr\u00eda escribirse as\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Store\nlocalStorage.lastname&nbsp;=&nbsp;\"Smith\";\n\/\/ Retrieve\ndocument.getElementById(\"result\").innerHTML&nbsp;= localStorage.lastname;<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La sintaxis para eliminar el elemento localStorage \u00ablastname\u00bb es la siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">localStorage.removeItem(\"lastname\");<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Nota<\/strong>: Los pares de nombre\/valor siempre se almacenan como cadenas. \u00a1Recuerda convertirlos a otro formato cuando sea necesario!<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">El siguiente ejemplo cuenta el n\u00famero de veces que un usuario ha hecho clic en un bot\u00f3n. En este c\u00f3digo, la cadena de valor se convierte en un n\u00famero para poder aumentar el contador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"es\"&gt;\n&lt;head&gt;\n&lt;script&gt;\n\tfunction clickCounter(){\n\t\tif(typeof(Storage) !==\"undefined\"){\n\t\t\tif(localStorage.clickcount){\n\t\t\t\tlocalStorage.clickcount = Number(localStorage.clickcount)+1;\n\t\t\t}else{\n\t\t\t\tlocalStorage.clickcount = 1;\n\t\t\t} \n\t\t\tdocument.getElementById(\"result\").innerHTML = \"Has hecho clic en el bot\u00f3n \" \n\t\t\t+ localStorage.clickcount + \" vez (veces)\";\n\t\t}else{\n\t\t\tdocument.getElementById(\"result\").innerHTML = \"Lo sentimos, tu navegador no soporta localStorage\";\n\t\t}\n\t}\n&lt;\/script&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;p&gt;&lt;button onclick=\"clickCounter()\" type=\"button\"&gt;Haz clic&lt;\/button&gt;&lt;\/p&gt;\n&lt;div id=\"result\"&gt;&lt;\/div&gt;\n&lt;p&gt;Haz clic en el bot\u00f3n para incrementar el contador&lt;\/p&gt;\n&lt;p&gt;Cierra la ventana y prueba otra vez, y el contador seguir\u00e1 contando\n (si no se resetea)&lt;\/p&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">El objeto sessionStorage<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El objeto <strong><em>sessionStorage<\/em> <\/strong>es igual al objeto <strong><em>localStorage<\/em><\/strong>, excepto que almacena los datos de una sola sesi\u00f3n. Los datos se eliminan cuando el usuario cierra la pesta\u00f1a espec\u00edfica del navegador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El siguiente ejemplo cuenta la cantidad de veces que un usuario ha hecho clic en un bot\u00f3n en la sesi\u00f3n actual.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;script&gt;\nfunction clickCounter() {\nif (typeof(Storage) !== \"undefined\") {\nif (sessionStorage.clickcount) {\nsessionStorage.clickcount = Number(sessionStorage.clickcount)+1;\n} else {\nsessionStorage.clickcount = 1;\n}\ndocument.getElementById(\"result\").innerHTML = \"You have clicked the button \" \n+ sessionStorage.clickcount + \" time(s) in this session.\";\n} else {\ndocument.getElementById(\"result\").innerHTML = \"Sorry, your browser does not support web storage...\";\n}\n}\n&lt;\/script&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n\n&lt;p&gt;&lt;button onclick=\"clickCounter()\" type=\"button\"&gt;Click me!&lt;\/button&gt;&lt;\/p&gt;\n&lt;div id=\"result\"&gt;&lt;\/div&gt;\n&lt;p&gt;Click the button to see the counter increase.&lt;\/p&gt;\n&lt;p&gt;Close the browser tab (or window), and try again, and the counter is reset.&lt;\/p&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Que es Web Storage? Con Web Storage, las aplicaciones web pueden almacenar datos localmente dentro del navegador del usuario. Antes de HTML5,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":41,"menu_order":66,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-288","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sutil Web","author_link":"https:\/\/sutilweb.eu\/index.php\/author\/sutilweb\/"},"uagb_comment_info":0,"uagb_excerpt":"Que es Web Storage? Con Web Storage, las aplicaciones web pueden almacenar datos localmente dentro del navegador del usuario. Antes de HTML5,...","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/288","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/comments?post=288"}],"version-history":[{"count":2,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/288\/revisions"}],"predecessor-version":[{"id":290,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/288\/revisions\/290"}],"up":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/41"}],"wp:attachment":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/media?parent=288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}