Versión actual: v1.4.0
Este proyecto permite mostrar contenidos web (eXeLearning, recursos IA, webs interactivas, etc.) empaquetados en un ZIP, sin tener que publicar en un hosting tradicional.
Este repositorio lo contiene todo:
gas/contiene el backend de Google Apps Script.- La web publica esta en la raiz del repositorio (GitHub Pages).
La solucion actual es:
- Backend en Google Apps Script: actua como proxy para descargar el ZIP y devolverlo al navegador.
- Frontend en GitHub Pages: descarga el ZIP, lo descomprime, guarda los archivos en el navegador (IndexedDB) y los sirve con Service Worker.
Enlaces:
- GitHub Pages: https://visor-webzip.github.io
- Repositorio: https://github.com/visor-webzip/visor-webzip.github.io
- Web App (Apps Script): (tu URL de despliegue)
- Entra en https://script.google.com y crea un nuevo proyecto.
- Copia el contenido de
gas/Code.jsy pegalo en el editor. - Copia
gas/appsscript.jsonen la vista de manifest. - Despliega como Web app:
- Ejecutar como: yo
- Quien tiene acceso: Cualquiera
- Guarda la URL de despliegue (termina en
/exec).
?url=...&bundle=1: devuelve el ZIP en base64 (solo para ZIPs pequenos/medianos).?url=...&bundle=1&meta=1: devuelve metadatos (size,acceptRanges,name) para descarga por trozos.?url=...&bundle=1&part=N&chunkSize=...: devuelve un trozo del ZIP (usaRange).?url=...&json=1: devuelve elsiteIdy elindexPath(legacy).
- Publica la raiz del repositorio en GitHub Pages.
- Edita
config.jsy pega la URL de tu Web App. - Abre la pagina, pega el enlace al ZIP y se generara una URL fija con
?url=.... - Al abrir esa URL, el navegador descarga el ZIP, lo guarda y muestra la web.
-
Para que el alumnado vea la web directamente en pantalla completa, comparte la URL con
&view=full. -
Para insertar el recurso en otra web (iframe), el visor incluye un modo
embed=1que carga el material dentro de un iframe interno y envía la altura al contenedor mediantepostMessage(autoajuste si la página permite scripts).-
Opción recomendada: usar el botón “Insertar en una web” que aparece al generar el enlace (y también el icono equivalente en el gestor). Ese botón genera un código listo para copiar y pegar.
-
Manual: el modo embed se activa con:
?url=...&embed=1
-
Ejemplo (mínimo):
<iframe src="https://visor-webzip.github.io/?url=URL_DEL_ZIP_ENCODEADA&embed=1" style="width:100%;height:80vh;border:0" loading="lazy" allow="fullscreen"></iframe>
-
Importante sobre iframes:
- En algunos navegadores/plataformas, un iframe de terceros puede limitar
IndexedDB/service worker y la persistencia puede fallar (especialmente en entornos con privacidad estricta). En ese caso el visor mostrará un botón de “Abrir en pestaña nueva” como alternativa fiable. - Si la plataforma añade
sandboxal iframe, puede romper scripts/navegación interna del recurso. Evítalo o configura permisos adecuados.
- En algunos navegadores/plataformas, un iframe de terceros puede limitar
-
-
El ZIP debe estar compartido publicamente (Drive con "Cualquiera con el enlace").
-
El primer acceso descarga y descomprime el ZIP en el navegador.
-
Para ZIPs grandes, el modo
bundle=1en una sola respuesta puede fallar por el tamano del base64. La solucion es la descarga por trozos (meta=1+part=), ya incluida engas/Code.jsy con fallback automatico en el frontend. -
Si cambias el ZIP pero mantienes el mismo enlace, los alumnos deben volver a abrir la URL para actualizar el cache.