sorttable. js работает с сервера, но не когда он встроен - PullRequest
0 голосов
/ 15 марта 2020

Я создаю инструмент, который генерирует отчеты, я бы хотел "html -сифицировать" их. Отчеты содержат много таблиц, и этот пакет JAVA SCRIPT был бы великолепен

https://kryogenix.org/code/browser/sorttable/

Работает - если и только если - я вытягиваю все файлы с веб-сервера. ie: Мой код содержит:

Не работает, если я подключаю модуль к модулю и загружаю его с сервера.

ТРЕБОВАНИЕ: Мне нужно, чтобы они были автономными файлы, мой «пользователь / жертва» должен щелкнуть имя файла и просмотреть файл отчета и НЕ запустить локальный сервер и т. д. c.

Фон - пример: в При разработке встроенного программного обеспечения у вас часто есть файл карты ссылок при компиляции файла, я хочу сделать лучшую HTML версию (в дополнение к простому тексту). Именно эти типы файлов пользователь должен щелкнуть и просмотреть. В долгосрочной перспективе это некоторые интерактивные графики и диаграммы, но (детскими шагами) изначально таблицы, которые можно отсортировать, будут фантастическими c.

ПРОБЛЕМА 1 То, что я пробовал

Если я добавлю файл «sorttable. js» следующим образом:

   <script>  ... body of sortable.js here ... </script>

Я получу мусор в своем браузере (и других, которые я пробовал), я увидел, что должен поместить это в ГОЛОВУ, и другие места говорят: тело, ничего, что я делаю, кажется, не работает.

ПРОБЛЕМА 2 Другой подход, который я попытался

Если я пытаюсь загрузить изображение из файла "далее в файлы HTML, точно так же, как файл HTML может загрузить «.png» или «.jpg» - это работает, но сценарий этого не делает, то есть:

   <script src="sorttable.js"></script>

Все браузеры выдают одинаковый мусор.

1 Ответ

0 голосов
/ 16 марта 2020

Согласно библиотеке page , таблицы должны иметь класс sortable, чтобы библиотека могла найти эти таблицы и применить функции сортировки. Вы должны ввести код, который:

  1. Введите сортируемый скрипт
  2. Дождитесь загрузки сортируемого скрипта
  3. Добавьте sortable класс ко всем таблицам
  4. Сброс sortable.init.done пометка и повторный запуск сценария
(function() {
  // Add sorttable.js to the page
  var po = document.createElement('script');
  po.type = 'text/javascript';
  po.async = true;
  po.src = 'https://kryogenix.org/code/browser/sorttable/sorttable.js';
  var s = document.getElementsByTagName('script')[0];
  s.parentNode.insertBefore(po, s);

  // set a timer to check and see when sorttable.js is loaded
  let timer = setInterval(() => {
    if (window.sorttable) {
      // Clear the timer
      clearInterval(timer);

      // Get all tables in the page
      let tables = document.querySelectorAll('table');

      // Add sortable class to each table
      tables.forEach((table) => table.classList.add('sortable'));

      // Reset sorttable done flag
      window.sorttable.init.done = false;

      // Re-run sorttable init code
      window.sorttable.init();
    }
  }, 200);
})();

Вы можете проверить, работает ли этот код:

  1. Открыть страницу с несколькими таблицами внутри, Например, HTML Таблицы
  2. Открытая консоль ( F12 в Widnows )
  3. Вставьте приведенный выше код и нажмите Enter

Вы должны увидеть, что таблица теперь сортируется.

...