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

161
Visualizações
Opciones de almacenamiento Javascript/HTML con protocolo de archivo (archivo://)

Estoy desarrollando una aplicación HTML/JS/CSS y me gustaría compartirla con la base de archivos. Así que mi equipo y yo podemos usarlo con un archivo HTML local (archivo://xxx.html). Tengo dos páginas separadas (archivos HTML), una lista de compras y otra despensa. Quiero agregar/marcar cosas de mi lista de compras como "compradas" que luego completarán la lista de artículos en mi despensa.

Intenté usar el almacenamiento local, pero parece estar basado en el dominio y no funciona bien entre los dos archivos. También estoy buscando soluciones sin conexión que deban mantener guardados los elementos agregados a cualquiera de las listas después de cerrar y volver a abrir el archivo.

about 4 years ago · Santiago Gelvez
1 Respostas
Responde à pergunta

0

No hay almacenamiento asociado con las URL file:// . Si puede configurar un servidor local simple o alojarlo en uno de los diversos servicios con un nivel gratuito, probablemente sea lo mejor.

Para hacerlo con solo un archivo, deberá hacer que el usuario cargue y guarde explícitamente el archivo:

  • Haz que tu página cargue un archivo local haciendo que el usuario arrastre y suelte o selecciónalo a través de un elemento input type="file" .
  • Permita que el usuario lo guarde generando el texto del archivo en la memoria y luego ofreciéndolo para descargarlo para que puedan guardarlo localmente.

Esta no es una gran experiencia de usuario, por supuesto.

Algo así ( enlace de CodeSandbox ; lamentablemente, Stack Snippets no permite la descarga):

 <div> <label> Load list: <input id="file-load" type="file" /> </label> </div> <input id="btn-save" type="button" value="Save List" /> <ul id="list"></ul> <div> <label> Add: <input id="item-text" type="text" width="20" /> </label> <input id="btn-add" type="button" value="Add" /> </div>
 const listElement = document.getElementById("list"); const fileInput = document.getElementById("file-load"); const saveButton = document.getElementById("btn-save"); const addButton = document.getElementById("btn-add"); const itemText = document.getElementById("item-text"); function addListItem(text) { const li = document.createElement("li"); li.textContent = text; listElement.appendChild(li); } fileInput.addEventListener("change", (e) => { e.currentTarget.files[0].text() .then(json => { const list = JSON.parse(json); for (const element of list) { addListItem(element); } }) .catch(error => { alert("Error loading list file!"); }); }); saveButton.addEventListener("click", () => { const list = Array.from( listElement.children, li => li.textContent ); const json = JSON.stringify(list); const blob = new Blob([json], { type: "application/json" }); const objUrl = URL.createObjectURL(blob); const link = document.createElement("a"); link.download = "list.json"; link.href = objUrl; document.body.appendChild(link); link.click(); setTimeout(() => { // Older Firefox needed this document.body.removeChild(link); }, 100); }); addButton.addEventListener("click", () => { const text = itemText.value.trim(); if (text) { addListItem(text); } itemText.value = ""; itemText.focus(); });

Eso es solo mantener una lista de cadenas, pero puede convertirla en una lista de objetos en su lugar, para que pueda tener su bandera checked , etc.)

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