Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

184
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda