Эквивалент include() в HTML

Мне было интересно, есть ли способ включить некоторый контент HTML в другой HTML, используя только HTML?

Замена PHP

<?php include("file.php"); ?>

Это возможно?

РЕДАКТИРОВАТЬ:

Это вызвало некоторую путаницу, и мне понадобился "почти html-тег", который имел функцию включения html-документа в другой.

12 ответов

Решение

Это не может быть сделано исключительно с помощью HTML. (Тем не менее, существуют iframe, но я не думаю, что в данном случае это подходит.)

Это можно сделать с помощью JavaScript. Вы получаете другой файл через Ajax и помещаете его содержимое в элемент HTML на текущей странице.

Ты пытался:

<object type="text/html" data="file.html"></object>

Бесстыдная заглушка библиотеки, которую я написал, решает эту проблему.

https://github.com/LexmarkWeb/csi.js

<div data-include="/path/to/include.html"></div>

Выше будет принимать содержимое /path/to/include.html и заменить div с этим.

HTML не имеет возможности включать дополнительный контент изначально. Однако большинство веб-серверов имеют операторы включения на стороне сервера:
SSI в Apache
SSI в IIS

Единственное, что будет iframe, который является чистым HTML. но вы также можете использовать javascript, чтобы получить страницу через AJAX и включить ее в свой дом иерархии

Да, но вы должны включить его в своем конфиге или.htaccess:

Options +Includes
AddType text/html .shtml
AddHandler server-parsed .shtml

Конечно, с этим вам нужно переименовать любой файл, включая .shtml... или вы можете использовать:

Options +Includes
AddType text/html .html
AddHandler server-parsed .html

сам синтаксис похож на комментарий:

<!--#include virtual="/footer.html" -->

Это может быть на несколько лет позже, но я так и сделал!

в первой строке после поставить эту строку!

<SCRIPT LANGUAGE="JavaScript" src="http://yourdomain.com/header.js">

затем создайте файл с именем header.js и введите содержимое файла, который вы хотите включить! вот так....

<!-- Begin
document.write('<center>');
document.write('<a href="http://alinktosomewhere.co.za">a link 1</a>');
document.write('<a href="http://alinktosomewhere.co.za">a link 1</a>');
document.write('<a href="http://alinktosomewhere.co.za">a link 1</a>');
document.write('<a href="http://alinktosomewhere.co.za">a link 1</a>');
document.write('<hr>');
document.write('</center>');
// End -->

Надеюсь, это поможет!

Если вы используете Apache, вы можете попробовать Server Side Includes,

Нет такого понятия. Чтобы сделать что-то подобное, вам придется использовать язык сценариев на стороне сервера или JavaScript.

Спустя почти 10 лет у некоторых людей все еще могут быть сомнения по этому поводу. Итак, я собираюсь объяснить простое решение, которое у нас есть сегодня в 2020 году.

Я всегда использую функцию jquery .load() и никогда не сталкивался с этим.

Exemple: ( "#content" ).load( "includes/menu.html" );

Теперь, в 2022 году, я использую Vanilla Javascript fetch().

Вот как включить файл: "newfile.html" в div: "контейнер"

      // HTML
<div id="container"></div>


// JS
const loadHtmlFile = (fileName, containerId) => {
  fetch(fileName).then(function (response) {
    return response.text();
  }).then(function (html) {
    containerId.innerHTML = html;
  }).catch(function (err) {
    console.warn('Something went wrong.', err);
  });
}

loadHtmlFile("newfile.html", container)

Отсутствие Включить \ Импорт в HTML действительно разочаровывает!

Хорошей альтернативой является "Включение на стороне сервера (SSI)" на случай, если "PHP" не поддерживается!

SSI поддерживается практически любым (если не всем) сервером веб-хостинга!

<!--#include virtual="layout.html" -->

Файл, содержащий вышеуказанную строку, должен заканчиваться расширениями ".shtml" или ".shtm"!


Действительно раздражает, что такой простой способ, как Include \ Import, не может быть выполнен самим браузером!

Как и php или Node.js, предварительная обработка HTML с использованием самого Javascript перед запуском процесса загрузки HTML должна поддерживаться в любом браузере!

Другие вопросы по тегам