Я работаю с CMS, которая предотвращает редактирование исходного кода HTML для <head>
элемента.
Например, я хочу добавить над <title>
тегом следующее:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
javascript
jquery
css
xhtml
Джитендра Вьяс
источник
источник
<meta>
динамическое добавление тегов может не иметь никакого эффекта, в зависимости от того, что они собой представляют и какой браузер задействован.Ответы:
Вы можете выбрать его и добавить к нему как обычно:
источник
insertBefore
,insertAfter
это то , что вам нужно.JavaScript:
Сделайте элемент DOM так:
источник
jQuery
JavaScript:
источник
...
потому что я не чувствовал, что это центральная часть вопроса, а также, на момент написания не было практического примера того, что он хотел вставить в голову. но да, это должен быть DOM-элемент.Вы можете
innerHTML
просто объединить строку дополнительного поля;Однако вы не можете гарантировать, что дополнительные элементы, которые вы добавляете в заголовок, будут распознаваться браузером после первой загрузки, и, возможно, вы получите FOUC (мигание нестилизованного содержимого) при загрузке дополнительных таблиц стилей.
Я не смотрел API годами, но вы также можете использовать
document.write
, что было разработано для такого рода действий. Однако для этого потребуется заблокировать отображение страницы до тех пор, пока не будет выполнен исходный запрос AJAX.источник
В последних версиях браузеров (IE9 +) вы также можете использовать document.head :
Пример:
источник
Создайте временный элемент (например
DIV
), назначьте свой HTML-код егоinnerHTML
свойству, а затем добавьте его дочерние узлы кHEAD
элементу один за другим. Например, вот так:По сравнению с перезаписью всего
HEAD
содержимого через негоinnerHTML
, это никак не повлияет на существующие дочерние элементыHEAD
элемента.Обратите внимание, что скрипты, вставленные таким образом, по-видимому, не выполняются автоматически, а стили применяются успешно. Поэтому, если вам нужно выполнить скрипты, вы должны загрузить файлы JS с помощью Ajax, а затем выполнить их содержимое с помощью
eval()
.источник
body
, но действительно ли это можно сделать внутриhead
тега -tag? Я был под впечатлением , что только разрешенные теги гдеbase
,link
,meta
,title
,style
иscript
?DIV
Элемент - это всего лишь временный контейнер для анализа HTML-кода . Вы не должны вставлятьDIV
саму себя вHEAD
. Вы должны вставить его дочерние узлы . См. Пример, который я добавил к ответу.temp
элемента есть дочерние элементы ». См. Документацию по Node.firstChild () .Попробуйте чистый javascript:
Библиотека JS:
Тип:
appendHtml(document.head, '<link rel="stylesheet" type="text/css" href="http://example.com/example.css"/>');
или jQuery:
источник
С jquery у вас есть другой вариант:
в любом случае он работает. Другой вариант JavaScript сказал, что это тоже правильно.
источник
.html()
не восстановит все свойства DOM. (Наиболее распространенный и наиболее заметный случай этой проблемы возникает при использовании аналогичного кода для добавления новых полей в форму. Атрибут value представляет значение поля по умолчанию, поэтому его получениеhtml()
и последующее восстановление сбросит все существующие значения по умолчанию).