Подтвердить что ты не робот

Почему HTML5 не включает способ загрузки локального HTML в документ?

Я много думал об этом в последнее время. Почему HTML5 не позволяет загружать HTML-код в ваш документ, чтобы разбить ваши HTML файлы?

Он поддерживает почти все другие объекты (изображения, видео, аудио).

Да, у нас есть iframes, embeds и objects, но они изолированы и не следуют потоку остальной части документа.

Я думал о чем-то вроде:

<h2>My wonderful application</h2>

<include src = "leftPane.html" type = "text/html" />

<include src = "main.html" type = "text/html" />

<include src = "footer.html" type = "text/html" />

Мне хотелось бы, чтобы кто-то мне это объяснил. В почти каждом веб-приложении, которое мы делаем, мы используем какую-то форму шаблонов для разбиения нашего HTML-кода, поэтому почему HTML5 не просто включает его?

Буду признателен за ваши (беспламенные) мысли.

Matt

4b9b3361

Ответ 1

Как оказалось, это появилось в списках рассылки WHATWG: Клиентская сторона включает предложение: Шеннон предложил именно то, что вы говорите, где синтаксический анализатор должен блокироваться при загрузке фрагментов документа. Ян Хиксон отклонил это, потому что задержка слишком велика. Кроме того, это простая функция, которую многие веб-серверы уже предоставляют, поэтому она считалась нецелесообразной.

Вместо этого вы можете исследовать, используя атрибут seamless iframe, который заставляет полный документ быть помещенным внутри документа но действуют как любой элемент блока (наследуя стили из документа узла). Тем не менее, я не думаю, что это поддерживается многими браузерами.

Ответ 2

Нет, каждый запрос wold не требует обратной поездки на сервер, если содержимое шаблонов является константным, тогда оно может быть кэшировано и меньше данных должно быть передано. Вот почему вы помещаете css и javascript в отдельные файлы.

Ответ 3

Аналогичный вопрос задавали и можно: HTML5 включить файл

Ответ Рафы:


Используйте тег object:

<object name="foo" type="text/html" data="foo.inc"/>

foo.inc должен включать допустимый HTML.


Я тестировал его на Konqueror, Firefox и Chromium.

Если вы сочтете это полезным (я делаю), пожалуйста, поддержите ответ Рафы (не мой), потому что "это невозможно" распространяется как болезнь.

Ответ 4

HTML5 состоит из трех компонентов: HTML, CSS и JavaScript. Поэтому мы должны использовать их все, чтобы использовать HTML5.

Внешний HTML-код может быть включен в другой html-документ с использованием javascript. Единственное, что вы должны хранить внешний код в файле .js. Вот пример того, как включить html-абзац:

<!DOCTYPE html>
<html>
    <head>
    <title>Main Page</title>
        <script type="text/javascript" src="include_html.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            paragraph();
        </script>
    </body>
</html> 

Содержание include_html.js

function paragraph()
{
        document.write("<p> This is an HTML paragraph </p>");
}

Ответ 5

Каждый запрос, конечно же, потребует обратного прохода к серверу - можете ли вы представить проблемы с пропускной способностью, которые это может вызвать? Будет 4 запроса только для вашего фрагмента выше (исходная страница + 3 включает в себя), а затем, конечно, проблемы с отображением браузера, а затем локальные проблемы JS (то есть в какой момент загружена DOM - есть ли у вас 4 DOM?).

Ответ 7

Пока это не является официальным, но похоже, что Web Components, новая концепция, которая позволит импортировать аналогично тому, как вы описали, может быть добавлена ​​в спецификацию HTML в ближайшем будущем. Он не ведет себя точно так, как вы просили, - заметил Барри Кай, - это создаст какую-то проблему, но вместо этого берет эту идею и решает проблемы.

Здесь вы можете увидеть текущий рабочий проект: http://w3c.github.io/webcomponents/spec/imports/

И я также нашел эту статью, которая может быть легче понять (это было для меня) здесь: http://www.html5rocks.com/en/tutorials/webcomponents/imports/

Я знаю, что это в основном теоретический ответ, но тогда это был также своего рода теоретический вопрос:).