Есть ли разница между добавлением тегов шаблона в заголовок или тело документа HTML?

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

conste template = document.createElement('template');
// add template content etc.

document.body.appendChild(template);
// or
document.head.appendChild(template);

Я просто наткнулся на кодовую базу, которая динамически добавляет шаблоны в head и моя интуиция говорит мне, что, возможно, это не лучшая идея, но, может быть, это не имеет значения?

2 ответа

Решение

Шаблоны являются одними из самых гибких элементов, где они могут быть размещены. Спецификация говорит

Контексты, в которых этот элемент может быть использован:
- Где ожидается содержание метаданных.
- Где ожидается фразовое содержание.
- Где ожидаются элементы поддержки сценариев.
- Как дочерний элемент элемента colgroup, который не имеет атрибута span.

"Где ожидается содержание метаданных". по сути значит в голове.

"Там, где ожидается фразовое содержание". по сути, означает, что куда угодно может пойти действительный потомок элемента body.

"Там, где ожидаются элементы, поддерживающие сценарий", это означает, что он может идти даже в тех местах, которые не могут содержать фразы, такие как дочерние элементы элементов ul, ol, table, tbody, tr и т. Д.

Я думаю, что это должно быть в <body>, Mozilla определяет разрешенный контент в <head> тег быть:

Если документ является <iframe> документ srcdoc, или если информация заголовка доступна из протокола более высокого уровня, ноль или более элементов содержимого метаданных. В противном случае, один или несколько элементов содержимого метаданных, где точно <title> элемент.

Глядя на пример на MDN, они добавили <template> тег в теле, а также.

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