Un lector me ha escrito consultando sobre un post algo antiguo, sobre cómo poner un sencillo mensaje de cookies en una web. La verdad es que no me he explicado muy bien en aquel post, los navegadores han cambiado durante estos últimos años, Javascript también.. así que aquí estoy compartiendo otro mensaje de aceptar cookies más actual.
Este mensaje de aceptar cookies es una actualización de aquel antiguo que vengo usando en nuevos proyectos. Es un mensaje hecho artesanalmente que puedes copiar y pegar para tu web. El único requisito que tiene es que necesitas usar la librería de jQuery para que funcione. jQuery hoy día es como un estándar, hace tan bien su trabajo de acceder al DOM de las páginas web, que cómo no usarlo en todos los proyectos.
Una peculiaridad que tiene este mensaje es que no utiliza cookies, jeje, utiliza el localStorage de los navegadores. El localStorage es uno de los varios sistemas de almacenamiento de información en navegadores para hacer que las webs sean seguras y que funcionen. Espero que no se metan de nuevo los abogados a legislar y hacernos la vida más complicada también con el localStorage. Como si fueran un problema estas cookies, si realmente lo que hacen es aumentar la seguridad de las webs.. a saber:
Las webs que usan cookies son más seguras que las que no usan cookies.
Es un sin sentido, pero en fin, hecha la Ley, no queda más que obedecer y punto pelota. Todos a poner el bloqueante y cansino mensaje de cookies en todas las webs 🙁
Vamos con el código, el mensaje de aceptar cookies
Lo primero que todo es que necesitas cargar en el HEAD del documento la librería de jQuery. A fecha de hoy se publica este CDN que puedes copiar y pegar en tu web:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Lo siguiente es el código en sí que hace la caja del mensaje en la parte inferior de la web. El mejor sitio donde puedes ponerlo es antes de cerrar la etiqueta BODY, es decir, antes de donde pone </BODY> en tu página web. Otra opción es poner el DIV dentro del BODY, y los códigos STYLE y SCRIPT en la cabecera. Pero lo dicho, si quieres ser papista a tope y seguir los consejos sobre SEO, el mejor sitio es antes de cerrar el BODY. Ahí va el código:
<div id="div-cookies" style="display: none;"> Necesitamos usar cookies para que funcione todo, si permanece aquí acepta su uso, más información en <a hreflang="es" href="/info/aviso-legal">Aviso Legal</a> y la <a hreflang="es" href="/info/politica-de-privacidad">Política de Privacidad</a>. <button type="button" class="btn btn-sm btn-primary" onclick="acceptCookies()"> Acepto el uso de cookies </button> </div> <style> #div-cookies { position: fixed; bottom: 0px; left: 0px; width: 100%; background-color: white; box-shadow: 0px -5px 15px gray; padding: 7px; text-align: center; } </style> <script> function checkAcceptCookies() { if (localStorage.acceptCookies == 'true') { } else { $('#div-cookies').show(); } } function acceptCookies() { localStorage.acceptCookies = 'true'; $('#div-cookies').hide(); } $(document).ready(function() { checkAcceptCookies(); }); </script>
A que es sencillo, ya tú te lo puedes adaptar como quieras. Fíjate que este mismo código no usa Cookies para saber que el usuario ya ha aceptado, sino el localStorage del navegador.
Cómo ver la información de cookies, localStorage, etc..
En Firefox o Chrome se hace dándole con el botón derecho a la página, y click en inspeccionar página web. Deberías de ver algo parecido a la image siguiente:
Esta imagen es del navegador que más uso últimanente, el Firefox Developer Edition. ¡Muy recomendable!
Reuniendo todos los códigos fuentes en un único fichero
Recapitulando lo anterior, sólo me queda dejar todos los códigos fuentes anteriores en un sólo fichero único que puedes adaptar a lo que necesites. Está 100% probado en local y funciona. Tampoco necesitas subir este fichero al servidor para que funcione ya que sólo usa HTML, CSS y Javascript.. con lo que grabando esto en un fichero index.html en tu ordenador, le haces doble click para que se abra en el navegador y lo verás:
<html> <head> <title>JnjSite.com: Nueva versión del sencillo mensaje de aceptar cookies para tu web</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <meta charset="utf-8"> </head> <body> <div id="div-cookies" style="display: none;"> Necesitamos usar cookies para que funcione todo, si permanece aquí acepta su uso, más información en <a hreflang="es" href="/info/aviso-legal">Aviso Legal</a> y la <a hreflang="es" href="/info/politica-de-privacidad">Política de Privacidad</a>. <button type="button" class="btn btn-sm btn-primary" onclick="acceptCookies()"> Acepto el uso de cookies </button> </div> <style> #div-cookies { position: fixed; bottom: 0px; left: 0px; width: 100%; background-color: white; box-shadow: 0px -5px 15px gray; padding: 7px; text-align: center; } </style> <script> function checkAcceptCookies() { if (localStorage.acceptCookies == 'true') {} else { $('#div-cookies').show(); } } function acceptCookies() { localStorage.acceptCookies = 'true'; $('#div-cookies').hide(); } $(document).ready(function() { checkAcceptCookies(); }); </script> </body> </html>
Espero haber podido ayudar.
Un saludo.
2 ideas sobre “Nueva versión del sencillo mensaje de aceptar cookies para tu web”
Muy bueno el aporte.
¿Es posible modificar este código para utilizarlo en un sitio en tres idiomas: español, inglés y francés?
Gracias por el aporte.
Muchas gracias Medardo!
Es posible, en teoría podrías modificar el contenido del div que contiene el mensaje para traducirlo al vuelo. Para eso puedes usar jQuery, con algo como esto:
jQuery(‘#div-cookies’).html(‘AQUI VA EL CONTENIDO TRADUCIDO’);
La siguiente pregunta es cómo querrías detectar el idioma del visitante, si es por la URL, quizá tiene /es/, /en/, en la URL. Esto también lo puedes consultar programando un poco en Javascript. Lo puedes consultar con la variable Javascript siguiente:
window.location.pathname
También se puede detectar en las cabeceras que envía el navegador al servidor web. Es decir, cada navegador suele enviar una cabecera que se llama Accept-Language, que identifica el lenguaje del visitante. En teoría, el valor del lenguaje del navegador lo tienes en la variable de Javascript siguiente:
navigator.language
Saludos.