Интеграция переключения URL-адресов PDF-файлов с помощью раскрывающегося списка в Wix с использованием обмена сообщениями JavaScript

Temp mail SuperHeros
Интеграция переключения URL-адресов PDF-файлов с помощью раскрывающегося списка в Wix с использованием обмена сообщениями JavaScript
Интеграция переключения URL-адресов PDF-файлов с помощью раскрывающегося списка в Wix с использованием обмена сообщениями JavaScript

Расширение функциональности средства просмотра PDF-файлов на сайте библиотеки Wix

Отображение обширного архива PDF-файлов в организованном и удобном для пользователя виде имеет решающее значение для улучшения пользовательского опыта на веб-сайте публичной библиотеки. Цель состоит в том, чтобы предложить посетителям беспрепятственный доступ к историческим записям, таким как старые газеты, которые хранятся в формате PDF. В этом проекте использование Wix, Velo и элемента встраивания HTML создает основу для надежной системы.

Платформа Wix поддерживает встроенные элементы через iframe, позволяя пользователям добавлять интерактивные компоненты, такие как программы просмотра PDF. Эта программа просмотра PDF-файлов встроена с помощью iframe, и в настоящее время статический URL-адрес определяет, какой документ отображается. Однако необходимость динамического изменения PDF-файла на основе пользовательского ввода необходима для бесперебойной работы.

Задача состоит в том, чтобы позволить пользователям выбирать год и месяц из двух раскрывающихся списков, что затем приведет к изменению отображаемого PDF-документа. Это предполагает интеграцию обмена сообщениями JavaScript для связи с iframe, позволяя URL-адресу документа изменяться в соответствии с вариантами раскрывающегося списка.

Такой подход не только снижает потребность в многочисленных статических страницах Wix, но и упрощает доступ к PDF-архиву библиотеки. Ниже мы рассмотрим шаги и решения, необходимые для реализации этого с использованием платформы Velo и JavaScript.

Команда Пример использования
PSPDFKit.load() Этот метод инициализирует средство просмотра PDF-файлов PSDFKit внутри определенного контейнера. Он загружает PDF-файл по предоставленному URL-адресу, делая его доступным для просмотра внутри элемента внедрения. Он специфичен для библиотеки JavaScript PSDFKit, которая предназначена для встраивания и просмотра PDF-документов.
postMessage() Используется для связи между родительским окном и встроенным iframe. В этом контексте он отправляет сообщение с главной страницы в iframe, позволяя iframe обновлять свое содержимое (URL-адрес PDF) на основе выбора из раскрывающегося списка.
window.addEventListener("message") Этот прослушиватель событий добавляется внутри iframe для прослушивания сообщений, отправленных через postMessage(). Он обрабатывает сообщение для динамической загрузки нового PDF-документа в iframe на основе полученных данных.
event.data В обработчике событий сообщения event.data содержит данные, отправленные из родительского окна. В этом случае он включает URL-адрес выбранного PDF-файла для загрузки в средство просмотра PSPDFKit.
document.getElementById() Этот метод манипуляции DOM извлекает элемент HTML по его идентификатору. Он используется для сбора вводимых пользователем данных из раскрывающихся элементов, позволяя сценарию определить выбранный год и месяц для обновления URL-адреса PDF.
DOMContentLoaded Событие, которое гарантирует выполнение JavaScript только после полной загрузки DOM. Это предотвращает ошибки при попытке доступа к элементам DOM до их существования.
addEventListener("change") Этот прослушиватель событий отслеживает элементы раскрывающегося списка на предмет любых изменений. Когда пользователь выбирает другой год или месяц, функция срабатывает для обновления URL-адреса PDF и загрузки соответствующего документа.
template literals Литералы шаблона (заключенные обратными кавычками) позволяют встраивать переменные в строки, упрощая динамическое создание URL-адреса для выбранного PDF-файла. Например: `https://domain.tld/${year}_${month}_etc.pdf`.
container: "#pspdfkit" При инициализации PSPDFKit контейнер указывает элемент HTML (по идентификатору), в котором будет отображаться средство просмотра PDF. Это важно для определения того, где PDF-файл будет отображаться на странице.

Динамическая загрузка PDF с раскрывающимся списком в Wix

В этом решении мы используем пару раскрывающихся элементов на странице Wix для динамического изменения URL-адреса PDF-файла, отображаемого во встроенном iFrame. Эта система особенно полезна для публичных библиотек, желающих обеспечить легкий доступ к архивным газетным PDF-файлам. Основная функциональность обеспечивается Обмен сообщениями JavaScript, который отправляет выбор пользователя из раскрывающегося списка во встроенную программу просмотра PDF-файлов. Средство просмотра PSPDFKit используется для рендеринга PDF-файлов внутри iFrame, и мы манипулируем средством просмотра, изменяя URL-адрес в зависимости от выбора пользователем года и месяца. Это обеспечивает упрощенный способ работы с большими архивами без создания нескольких статических страниц Wix.

В первом раскрывающемся списке выбирается год, а во втором раскрывающемся списке — месяц. Когда пользователь выбирает оба варианта, система создает соответствующий URL-адрес для соответствующего файла PDF. PSDFKit.load() Этот метод играет центральную роль в этом, поскольку он загружает новый PDF-файл в iFrame на основе обновленного URL-адреса. Этот метод является частью библиотеки PSDFKit, которая внедряется на страницу посредством внешнего скрипта. постСообщение() API также имеет решающее значение в альтернативном решении, которое позволяет обмениваться сообщениями между родительской страницей и iframe. При отправке сообщения, содержащего новый URL-адрес PDF-файла, в iframe средство просмотра PDF-файлов обновляется динамически.

Чтобы гарантировать, что скрипт запускается только тогда, когда DOM полностью загружен, мы используем DOMContentЗагружено событие. Это гарантирует, что элементы раскрывающегося списка и контейнер PSDFKit будут доступны сценарию. Мы также добавляем прослушиватели событий в каждый раскрывающийся список. Когда пользователь выбирает год или месяц, соответствующий прослушиватель событий фиксирует выбор и вызывает функцию для перезагрузки средства просмотра PDF с правильным URL-адресом. Это решается с помощью простой функции, которая использует литералы шаблона для создания URL-адреса из выбранных значений в раскрывающихся списках. Этот метод не только прост в реализации, но и обладает высокой степенью модульности, что позволяет легко обновлять его по мере добавления новых архивов.

Во втором подходе мы используем постСообщение() для связи между родительской страницей и iFrame. Родительская страница прослушивает изменения раскрывающегося списка и отправляет сообщение, содержащее новый URL-адрес PDF, в iFrame, который получает сообщение с помощью прослушивателя событий. Этот метод полезен при работе с более изолированными средами, где iframe не может напрямую взаимодействовать с DOM родительской страницы. Оба метода обеспечивают эффективные способы динамического обновления содержимого встроенной программы просмотра PDF-файлов, уменьшая потребность в нескольких статических страницах и предлагая удобный просмотр.

Реализация переключения URL-адресов на основе раскрывающегося списка для средства просмотра PDF в Wix

Сценарий внешнего интерфейса с использованием JavaScript и платформы 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>

Альтернативный подход: использование API PostMessage для связи iFrame

Сценарий внешнего интерфейса, использующий API postMessage для лучшей изоляции между iframe и родительским документом.

// 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>

Улучшение доступности PDF-архива с помощью Wix и обмена сообщениями JavaScript

Еще одним важным моментом при использовании раскрывающихся элементов для динамического изменения URL-адреса встроенного PDF-файла в Wix является обеспечение того, чтобы взаимодействие между iFrame и главная страница эффективна. Хотя обмен сообщениями JavaScript позволяет нам передавать данные между этими двумя компонентами, производительность и удобство использования можно улучшить за счет оптимизации того, как выбор запускает обновления. Это можно сделать путем устранения дребезга ввода. Это означает, что система обновляет средство просмотра PDF-файлов только после того, как пользователь завершил свой выбор, а не при каждом изменении.

Еще один аспект, который еще не был рассмотрен, — это совместное использование ресурсов между источниками (CORS). Поскольку PDF-файлы размещаются на внешнем сервере (например, Digital Ocean), крайне важно убедиться, что сервер настроен на разрешение доступа из домена Wix. Если параметры CORS сервера настроены неправильно, средство просмотра PDF-файлов не сможет загрузить документ, что приведет к ошибкам. Правильные заголовки CORS на сервере, на котором размещены файлы PDF, необходимы для плавной интеграции между двумя платформами.

Кроме того, вы можете улучшить систему, предварительно загрузив часто используемые PDF-файлы, чтобы сократить время загрузки. Стратегии предварительной загрузки полезны, когда пользователь может переключаться между несколькими месяцами или годами. Сохраняя эти файлы в кеше браузера, последующая загрузка документов будет происходить быстрее, обеспечивая более плавное взаимодействие с пользователем. Это можно сделать с помощью сервисных работников или других механизмов кэширования, которые можно настроить для предварительной загрузки PDF-файлов по мере того, как пользователь перемещается по доступным параметрам.

Часто задаваемые вопросы о встраивании динамических PDF-файлов в Wix

  1. Как добавить раскрывающиеся списки в Wix?
  2. Вы можете добавлять раскрывающиеся элементы с помощью редактора Wix и использовать JavaScript для управления ими, назначая уникальные идентификаторы. Элементы раскрывающегося списка будут вызывать изменения в URL-адресе PDF-файла через document.getElementById().
  3. Что означает PSPDFKit.load() команда делать?
  4. PSPDFKit.load() Метод отвечает за рендеринг средства просмотра PDF и загрузку в него определенного PDF-файла. Этот метод является частью библиотеки PSDFKit, используемой для динамического отображения PDF-файлов.
  5. Могу ли я использовать postMessage() для связи между разными источниками?
  6. Да, postMessage() API специально разработан для связи между различными источниками, например между родительской страницей и iFrame, что имеет решающее значение для этой реализации.
  7. Как обрабатывать ошибки при загрузке PDF-файла?
  8. Вы можете обрабатывать ошибки, добавив .catch() блокировать до PSPDFKit.load() Функция для обнаружения любых ошибок, возникающих в процессе загрузки, и отображения соответствующего сообщения об ошибке.
  9. Нужно ли мне настраивать свой сервер для CORS?
  10. Да, если ваши PDF-файлы размещены в другом домене, вам необходимо убедиться, что сервер настроен правильно. CORS заголовки, позволяющие сайту Wix получить доступ к документам.

Заключительные мысли о динамическом отображении PDF

Это решение упрощает процесс отображения больших архивов PDF-файлов на одной странице. Используя два раскрывающихся списка для выбора года и месяца, мы можем динамически обновлять программу просмотра PDF-файлов, не создавая несколько страниц Wix.

Сочетая гибкость платформы Velo с обменом сообщениями JavaScript между раскрывающимися списками и iFrame, этот метод обеспечивает эффективный способ организации и представления исторических данных. Он масштабируем и удобен для общедоступных веб-сайтов, таких как библиотечные архивы.

Источники и ссылки для динамической загрузки PDF с помощью Wix и JavaScript
  1. Содержит подробную документацию по работе с элементом HTML iFrame и обменом сообщениями JavaScript в Wix с использованием платформы Velo. Посещать Документация разработчика Wix для получения дополнительной информации.
  2. Официальная документация PSDFKit, в которой подробно описано, как встраивать и загружать PDF-файлы в iFrame с помощью библиотеки JavaScript. Доступ к нему здесь: Документация PSDFKit .
  3. Руководство по реализации совместного использования ресурсов между источниками (CORS) для обеспечения правильной загрузки PDF-файлов с внешних серверов, таких как Digital Ocean. Вы можете прочитать больше на Веб-документы MDN по CORS .