Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

182
Vistas
Establecer/eliminar elemento de almacenamiento local y EventListener

He estado jugando con localStorage y EventListener como se ve a continuación (de w3schools pero con mi juego). Lo siguiente siempre imprime "Se realizó un cambio en el área de almacenamiento 3" en el div. Supongo que esta es la naturaleza asíncrona de JS y tendría que hacer algo como el encadenamiento de promesas.

En segundo lugar, y de manera similar, cuando agrego la eliminación de la variable de localStorage y, por lo tanto, en EventListener, detecto que la variable es nula, lo siguiente no imprimirá nada en el div. Supongo que está viendo la eliminación antes de que pueda ejecutar el primer evento (configurar la variable) donde realmente se imprime. De todos modos, ¿hay alguna manera de configurar y eliminar una variable de localStorage o esto es todo lo que sincroniza y necesita promesas (anteriormente devoluciones de llamada y setTimeouts)? Muchísimas gracias.

 <button onclick="changeValue()">Change a Storage Item</button> <p id="demo"></p> <script> window.addEventListener("storage", myFunction); var x; var c=0; var mtv; function myFunction(event) { if (event.key==="mytime") { mtv=localStorage.getItem("mytime"); if (mtv===null) { } else { document.getElementById("demo").innerHTML = "A change was made in the storage area "+ c; } } } function changeValue() { x = window.open("", "myWindow", "width=200,height=100"); c=c+1 x.localStorage.setItem("mytime", "true"); c=c+1; x.localStorage.removeItem("mytime"); c=c+1; x.close(); } </script> </body> </html>

ACTUALIZAR... No sé cómo formatear el código en una respuesta, pero en lugar de hacer la eliminación instantánea anterior del objeto localStorage, opté por agregar/eliminar alternar en la variable localStorage... la adición o eliminación debería activarse el evento ActionListener en la ventana principal....

 if(localStorage.getItem('mytime')){ x.localStorage.removeItem("mytime"); }else{ x.localStorage.setItem("mytime", "true"); }
about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Ok, lo más fácil que puedes hacer para ver qué sucede es crear un HTML con tu código y abrirlo en tu navegador. Luego, coloque puntos de interrupción en el evento y en los lugares en los que actualiza el almacenamiento. Vamos a ver:

  • Haga clic en el botón
  • Abre una ventana (inútil porque esa ventana no hace nada)
  • Actualice el almacenamiento (aún no se ha disparado ningún evento)
  • Eliminar el almacenamiento (aún no se ha disparado ningún evento)
  • Cerrar la ventana
  • Ahora, recibes los 2 eventos con tu c=3 en ambos casos

Si necesita realizar un seguimiento de sus valores de c, puede guardar en el almacenamiento esos valores:

 x.localStorage.setItem("mytime", c);

Luego, recibe un primer evento con event.newValue="1" y un segundo con event.newValue=null y event.oldValue="1".

about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda