Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

157
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!