Millora de la funcionalitat del visualitzador de PDF en un lloc de biblioteca de Wix
Mostrar un ampli arxiu de fitxers PDF d'una manera organitzada i fàcil d'utilitzar és crucial per millorar l'experiència de l'usuari al lloc web d'una biblioteca pública. L'objectiu és oferir als visitants un accés perfecte a registres històrics com ara diaris antics, que s'emmagatzemen com a PDF. En aquest projecte, l'ús de Wix, Velo i un element incrustat HTML crea la base per a un sistema robust.
La plataforma de Wix admet elements incrustats mitjançant iframes, cosa que permet als usuaris afegir components interactius com ara visualitzadors de PDF. Aquest visualitzador de PDF s'incrusta mitjançant un iframe i, actualment, un URL estàtic defineix quin document es mostra. Tanmateix, la necessitat de canviar dinàmicament el fitxer PDF en funció de l'entrada de l'usuari és essencial per a una experiència fluida.
El repte és permetre als usuaris seleccionar un any i un mes entre dos menús desplegables, cosa que provocarà un canvi en el document PDF que es mostra. Això implica integrar missatgeria JavaScript per comunicar-se amb l'iframe, permetent que l'URL del document canviï segons les seleccions desplegables.
Aquest enfocament no només redueix la necessitat de nombroses pàgines Wix estàtiques, sinó que també simplifica l'accés a l'arxiu PDF de la biblioteca. A continuació, explorem els passos i les solucions necessàries per implementar-ho mitjançant el framework Velo i JavaScript.
Comandament | Exemple d'ús |
---|---|
PSPDFKit.load() | Aquest mètode inicialitza el visualitzador de PDF PSPDFKit dins d'un contenidor específic. Carrega un fitxer PDF des de l'URL proporcionat, fent-lo visible dins de l'element incrustat. És específic per a la biblioteca de JavaScript de PSPDFKit, que està dissenyada per incrustar i visualitzar documents PDF. |
postMessage() | S'utilitza per comunicar-se entre la finestra principal i un iframe incrustat. En aquest context, envia un missatge des de la pàgina principal a l'iframe, permetent a l'iframe actualitzar el seu contingut (l'URL del PDF) en funció de les seleccions desplegables. |
window.addEventListener("message") | Aquest oient d'esdeveniments s'afegeix dins de l'iframe per escoltar els missatges enviats mitjançant postMessage(). Processa el missatge per carregar dinàmicament un nou document PDF a l'iframe en funció de les dades rebudes. |
event.data | Dins del gestor d'esdeveniments del missatge, event.data conté les dades enviades des de la finestra principal. En aquest cas, inclou l'URL del fitxer PDF seleccionat que es carregarà al visualitzador PSPDFKit. |
document.getElementById() | Aquest mètode de manipulació DOM recupera un element HTML pel seu ID. S'utilitza per capturar l'entrada de l'usuari dels elements desplegables, permetent que l'script determini l'any i el mes seleccionats per a l'actualització de l'URL del PDF. |
DOMContentLoaded | Un esdeveniment que garanteix que JavaScript s'executi només després que el DOM s'hagi carregat completament. Això evita errors quan s'intenta accedir als elements DOM abans que existeixin. |
addEventListener("change") | Aquest oient d'esdeveniments supervisa els elements desplegables per detectar qualsevol canvi. Quan un usuari selecciona un any o mes diferent, s'activa la funció per actualitzar l'URL del PDF i carregar el document corresponent. |
template literals | Els literals de plantilla (tancats per backticks) permeten incrustar variables a les cadenes, facilitant la generació dinàmica de l'URL del PDF seleccionat. Per exemple: `https://domain.tld/${year}_${month}_etc.pdf`. |
container: "#pspdfkit" | A la inicialització PSPDFKit, el contenidor especifica l'element HTML (per ID) on es representarà el visualitzador de PDF. Això és essencial per definir on es mostrarà el PDF a la pàgina. |
Càrrega dinàmica de PDF amb seleccions desplegables a Wix
En aquesta solució, utilitzem un parell d'elements desplegables en una pàgina de Wix per modificar dinàmicament l'URL d'un fitxer PDF que es mostra dins d'un iFrame incrustat. Aquest sistema és especialment útil per a les biblioteques públiques que busquen proporcionar un accés fàcil als PDF de diaris arxivats. La funcionalitat bàsica està impulsada per Missatgeria JavaScript, que envia les seleccions d'usuari dels menús desplegables al visualitzador de PDF incrustat. El visualitzador PSPDFKit s'utilitza per representar els PDF dins de l'iFrame, i manipulem el visualitzador alterant l'URL en funció de l'any i el mes que l'usuari triï. Això proporciona una manera simplificada de mostrar arxius grans sense crear diverses pàgines Wix estàtiques.
El primer desplegable selecciona l'any i el segon desplegable selecciona el mes. Quan l'usuari selecciona tots dos, el sistema construeix l'URL adequat per al fitxer PDF corresponent. El PSPDFKit.load() El mètode és fonamental per a això, ja que carrega el nou PDF a l'iFrame en funció de l'URL actualitzat. Aquest mètode forma part de la biblioteca PSPDFKit, que s'incrusta a la pàgina mitjançant un script extern. El postMessage() L'API també és fonamental en la solució alternativa, que permet enviar missatges entre la pàgina principal i l'iframe. En enviar un missatge que conté la nova URL del PDF a l'iframe, el visualitzador de PDF s'actualitza de manera dinàmica.
Per assegurar-nos que l'script només s'executa quan el DOM està completament carregat, fem servir el DOMContentLoaded esdeveniment. Això garanteix que els elements desplegables i el contenidor PSPDFKit siguin accessibles per a l'script. També afegim oients d'esdeveniments a cada menú desplegable. Quan l'usuari selecciona un any o un mes, l'oient d'esdeveniments corresponent captura la selecció i crida a una funció per tornar a carregar el visualitzador de PDF amb l'URL correcte. Això es gestiona mitjançant una funció senzilla que utilitza literals de plantilla per construir l'URL a partir dels valors seleccionats als menús desplegables. Aquest mètode no només és fàcil d'implementar, sinó també molt modular, la qual cosa permet actualitzacions fàcils a mesura que s'afegeixen nous arxius.
En el segon enfocament, fem servir postMessage() per comunicar-se entre la pàgina principal i l'iFrame. La pàgina principal escolta els canvis del menú desplegable i envia un missatge que conté l'URL PDF nou a l'iFrame, que rep el missatge mitjançant un escolta d'esdeveniments. Aquest mètode és útil quan es tracta d'entorns més aïllats on l'iframe no pot interactuar directament amb el DOM de la pàgina principal. Tots dos mètodes ofereixen maneres eficients d'actualitzar el contingut d'un visor de PDF incrustat de manera dinàmica, reduint la necessitat de diverses pàgines estàtiques i oferint una experiència de navegació fàcil d'utilitzar.
Implementació del canvi d'URL basat en desplegables per al visualitzador de PDF a Wix
Script de front-end utilitzant JavaScript i el framework Velo
// HTML structure for the dropdowns and embed element
<div>
<label for="yearSelect">Select Year:</label>
<select id="yearSelect">
<option value="">--Year--</option>
<option value="1962">1962</option>
<option value="1963">1963</option>
<!-- Add other years dynamically or manually -->
</select>
<label for="monthSelect">Select Month:</label>
<select id="monthSelect">
<option value="">--Month--</option>
<option value="January">January</option>
<option value="February">February</option>
<!-- Add other months dynamically or manually -->
</select>
</div>
// Embedded PDF viewer in iframe
<div id="pspdfkit" style="width: 100%; height: 100%; max-width: 1920px;"></div>
<script src="https://cdn.cloud.pspdfkit.com/pspdfkit-web@2024.5.2/pspdfkit.js"></script>
// JavaScript to update URL based on dropdown selection
<script>
document.addEventListener("DOMContentLoaded", () => {
const yearSelect = document.getElementById("yearSelect");
const monthSelect = document.getElementById("monthSelect");
function loadPDF(year, month) {
if (year && month) {
const url = `https://domain.tld/${year}_${month}_etc.pdf`;
PSPDFKit.load({
container: "#pspdfkit",
document: url,
}).catch((error) => {
console.error("Failed to load PDF:", error);
});
}
}
yearSelect.addEventListener("change", () => {
loadPDF(yearSelect.value, monthSelect.value);
});
monthSelect.addEventListener("change", () => {
loadPDF(yearSelect.value, monthSelect.value);
});
});
</script>
Enfocament alternatiu: ús de l'API PostMessage per a la comunicació iFrame
Script de front-end utilitzant l'API postMessage per a un millor aïllament entre l'iframe i el document principal
// HTML structure remains the same for dropdowns
// Here, we use iframe with a postMessage-based communication system
<iframe id="pdfViewer" src="about:blank" style="width: 100%; height: 100%;"></iframe>
// JavaScript for sending messages to iframe
<script>
document.addEventListener("DOMContentLoaded", () => {
const yearSelect = document.getElementById("yearSelect");
const monthSelect = document.getElementById("monthSelect");
const iframe = document.getElementById("pdfViewer");
function updatePDFViewer(year, month) {
if (year && month) {
const url = `https://domain.tld/${year}_${month}_etc.pdf`;
iframe.contentWindow.postMessage({
type: "updatePDF",
url: url
}, "*");
}
}
yearSelect.addEventListener("change", () => {
updatePDFViewer(yearSelect.value, monthSelect.value);
});
monthSelect.addEventListener("change", () => {
updatePDFViewer(yearSelect.value, monthSelect.value);
});
});
</script>
// Inside iframe, use this script to receive the message
<script>
window.addEventListener("message", (event) => {
if (event.data.type === "updatePDF" && event.data.url) {
PSPDFKit.load({
container: "#pspdfkit",
document: event.data.url,
});
}
});
</script>
Millora de l'accessibilitat de l'arxiu PDF amb missatgeria Wix i JavaScript
Una altra consideració important a l'hora d'utilitzar elements desplegables per modificar dinàmicament un URL PDF incrustat a Wix és assegurar-se que la interacció entre iFrame i la pàgina principal és eficient. Tot i que la missatgeria JavaScript ens permet enviar dades entre aquests dos components, el rendiment i l'experiència de l'usuari es poden millorar optimitzant com la selecció activa les actualitzacions. Això es pot fer eliminant l'entrada, el que significa que el sistema només actualitza el visualitzador de PDF després que l'usuari hagi completat la selecció, en lloc de cada canvi.
Un altre aspecte que encara no s'ha tractat és compartició de recursos entre orígens (CORS). Com que els PDF s'allotgen en un servidor extern (com ara Digital Ocean), és crucial assegurar-se que el servidor estigui configurat per permetre l'accés des del domini Wix. Si la configuració CORS del servidor no està correctament configurada, és possible que el visualitzador de PDF no pugui carregar el document, cosa que provocarà errors. Les capçaleres CORS adequades al servidor que allotja els fitxers PDF són essencials per a una integració perfecta entre les dues plataformes.
A més, podeu millorar el sistema carregant prèviament els fitxers PDF d'accés freqüent per reduir els temps de càrrega. Les estratègies de càrrega prèvia són útils quan és probable que l'usuari canviï entre diversos mesos o anys. En emmagatzemar aquests fitxers a la memòria cau del navegador, les càrregues de documents posteriors seran més ràpides, proporcionant una experiència d'usuari més fluida. Això es pot fer mitjançant treballadors del servei o altres mecanismes de memòria cau, que es poden configurar per carregar prèviament els PDF a mesura que l'usuari navega per les opcions disponibles.
Preguntes freqüents sobre les incrustacions de PDF dinàmiques a Wix
- Com puc afegir els selectors desplegables a Wix?
- Podeu afegir elements desplegables mitjançant l'editor Wix i utilitzar JavaScript per controlar-los assignant identificadors únics. Els elements desplegables activaran canvis a l'URL del PDF document.getElementById().
- Què fa el PSPDFKit.load() comanda fer?
- El PSPDFKit.load() El mètode s'encarrega de representar el visualitzador de PDF i de carregar-hi un fitxer PDF específic. Aquest mètode forma part de la biblioteca PSPDFKit que s'utilitza per mostrar fitxers PDF de manera dinàmica.
- Puc utilitzar postMessage() per a la comunicació entre orígens?
- Sí, el postMessage() L'API està dissenyada específicament per comunicar-se entre diferents orígens, com ara entre una pàgina principal i un iFrame, que és crucial per a aquesta implementació.
- Com puc gestionar els errors en carregar un PDF?
- Podeu gestionar els errors afegint un .catch() bloc a la PSPDFKit.load() funció per detectar qualsevol error que es produeixi durant el procés de càrrega i mostrar un missatge d'error adequat.
- He de configurar el meu servidor per a CORS?
- Sí, si els vostres PDF estan allotjats en un domini diferent, haureu d'assegurar-vos que el servidor estigui configurat amb CORS capçaleres per permetre que el lloc Wix accedeixi als documents.
Consideracions finals sobre la visualització dinàmica de PDF
Aquesta solució simplifica el procés de mostrar grans arxius d'arxius PDF en una sola pàgina. Mitjançant dos elements desplegables per seleccionar l'any i el mes, podem actualitzar dinàmicament el visualitzador de PDF sense crear diverses pàgines Wix.
Combinant la flexibilitat del marc Velo amb la missatgeria JavaScript entre els menús desplegables i l'iFrame, aquest mètode proporciona una manera eficient d'organitzar i presentar dades històriques. És escalable i fàcil d'utilitzar per a llocs web públics com els arxius de biblioteques.
Fonts i referències per a la càrrega dinàmica de PDF amb Wix i JavaScript
- Proporciona documentació detallada sobre com treballar amb l'element HTML iFrame i missatgeria JavaScript a Wix mitjançant el marc Velo. Visita Wix Developer Docs per a més informació.
- La documentació oficial de PSPDFKit, que detalla com incrustar i carregar PDF dins d'un iFrame mitjançant la seva biblioteca de JavaScript. Accedeix-hi aquí: Documentació PSPDFKit .
- Una guia per implementar l'ús compartit de recursos entre orígens (CORS) per garantir la càrrega adequada de PDF des de servidors externs com Digital Ocean. Podeu llegir més a MDN Web Docs a CORS .