(Dis-) преимущества встраивания верхнего / нижнего колонтитула HTML с тегами <object>?

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

В моем случае я не могу использовать какие-либо серверные включения, например, с PHP. Я также вообще хотел бы избежать включения больших библиотек, таких как JQuery, только для такой простой задачи.

Теперь я наткнулся на /questions/21785925/kak-vklyuchit-html-stranitsu-v-druguyu-html-stranitsu-bez-frejma-frejma/21785935#21785935 который предлагает просто использовать HTML <object> тег для включения другого HTML-файла на страницу, например:

<object data="parts/header.html" type="text/html">header goes here</object>

Я мог бы упустить что-то важное здесь, но мне кажется, что этот путь идеально подходит для моих нужд. Это очень короткий и точный, <object> тег хорошо поддерживается всеми браузерами, мне не нужно включать большие библиотеки, и на самом деле мне даже не нужен JavaScript, который позволяет пользователям блокировать его, чтобы по-прежнему просматривать правильную структуру страницы и макет.

Так есть ли какие-либо недостатки, о которых я пока не знаю, с этим подходом? Основная причина моих сомнений в том, что из десятков ответов о том, как включать фрагменты HTML, рекомендуется только один <object> в то время как все остальные пошли по пути PHP или JavaScript/JQuery.

Кроме того, должен ли я обратить внимание на что-то особенное в отношении того, как поставить <object> на моей главной странице, или относительно структуры файла, который я хочу включить таким образом? Например, может ли встроенный файл быть полным документом HTML с <!DOCTYPE>, <html>, <head> а также <body> или я должен / должен удалить все эти структуры и оставить только внутренние элементы HTML? Есть ли что-то особенное в использовании JavaScript или CSS внутри HTML, встроенного таким образом?

1 ответ

Решение

Использование <object> тег для содержимого HTML очень похож на использование <iframe>, Оба загружают веб-страницу как отдельный документ внутри фрейма, который сам является дочерним элементом вашего основного документа.

Фреймы были очень популярны в первые дни веб-разработки, а затем в форме <frame> тег. Однако они, как правило, осуждаются, и вам следует использовать их как можно меньше.

Почему бы не использовать эту технику для отображения собственного контента

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

Почему бы не использовать эту технику для отображения чужого контента

Вы также не можете использовать его для обслуживания большого количества внешнего контента. Многие сайты (включая, например, SO) отправляют X-Frame-Options заголовок вместе с их веб-страницей, которая имеет значение SAMEORIGIN, Это предотвращает загрузку и отображение вашего контента.

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