Вставить строки HTML из данного файла - PullRequest
1 голос
/ 22 февраля 2020

Извините, если на этот вопрос уже есть ответ, я нигде не могу найти ответ на этот вопрос, поэтому помощь будет очень полезна.

У меня простой веб-сайт с кучей очень похожих HTML файлов каждая из которых имеет одну и ту же группу интерактивных ссылок, которые меняются в зависимости от того, что я делаю с сайтом.

Если мне нужно добавить / удалить / изменить строку HTML, мне нужно сделать это аналогично для каждого файла.

Мне было интересно, есть ли встроенный тип включения в HTML, где я могу указать переменные строки в одном файле и ссылаться на них в каждом файле HTML, чтобы мне нужно было только измените сам справочный файл.

Я знаю, что вы можете сделать это, используя JS, но есть ли способ использовать чистый HTML?

Спасибо.

1 Ответ

1 голос
/ 22 февраля 2020

Использование чистого HTML?

Да, но ... это почти наверняка не работает так, как вы ожидаете или нуждаетесь в работе. И вам не следует делать это , поскольку существуют различные, гораздо лучшие альтернативы.

Что не делать

Тег <object> (см. здесь ) можно использовать - или, скорее, неправильно использовать . Проблема в том, что он добавит ваш фрагмент как внедренный документ, что означает, что он будет иметь другой контекст для макета, стилей, сценариев и т. Д.

Пример: у меня есть фрагмент HTML в файл fragment.html:

<div class="stylish">hello world<div>

У меня есть другой файл welcome.html, содержащий полную HTML страницу:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>HTML object tag</title>
    <style>
        .stylish { color: magenta; }
    </style>
  </head>
  <body>
    <h2 class="stylish">demo</h2>

    <div class="stylish">
      <!-- don't do this! -->
      <object data="fragment.html"></object>
    <div>

  </body>
</html>

В частности, обратите внимание на строку <object data="fragment.html"></object>.

Попробуйте сами, и вы увидите, что фрагмент действительно включен. Заголовок «демо» стилизован, а «Привет, мир» - нет, несмотря на мои различные попытки. Это, вероятно, противоречит вашей цели.

В любом случае это неправильное использование тега, так как он предназначен для использования с мультимедийными объектами.

Кроме того, этот тег можно использовать только в тело страницы HTML - не в заголовке (в случае, если это было одним из ваших требований).

Старые HTML теги, такие как <embed> и <iframe>, имеют аналогичные функции.

Итак, вместо ...

Это возвращает вас к вариантам, обсуждаемым в других вопросах, таких как this и this .

...