как добавить что-нибудь через jquery/javascript?
работа с CMS, которая предотвращает редактирование HTML-источника для <head>
элемент.
например, я хочу добавить следующее выше <title>
теги:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
9 ответов:
JavaScript:
document.getElementsByTagName('head')[0].appendChild( ... );
сделать элемент DOM так:
link=document.createElement('link'); link.href='href'; link.rel='rel'; document.getElementsByTagName('head')[0].appendChild(link);
jQuery
$('head').append( ... );
JavaScript:
document.getElementsByTagName('head')[0].appendChild( ... );
в последних браузерах (IE9+) вы также можете использовать документ.голова:
пример:
var favicon = document.createElement('link'); favicon.id = 'myFavicon'; favicon.rel = 'shortcut icon'; favicon.href = 'http://www.test.com/my-favicon.ico'; document.head.appendChild(favicon);
можно использовать
innerHTML
чтобы просто объединить дополнительную строку поля;document.head.innerHTML = document.head.innerHTML + '<link rel="stylesheet>...'
тем не менее, вы не можете гарантировать, что дополнительные вещи, которые вы добавляете в голову, будут распознаны браузером после первой загрузки, и, возможно, вы получите FOUC (вспышку неустановленного контента) по мере загрузки дополнительных таблиц стилей.
Я не смотрел на API в течение многих лет, но вы также можете использовать
document.write
, который был разработан для такого рода действий. Однако, это потребуется заблокировать страницу от рендеринга до тех пор, пока ваш первоначальный запрос AJAX не будет завершен.
создать временный элемент (например,
DIV
), назначьте свой HTML-код на егоinnerHTML
свойство, а затем добавить его дочерние узлы доHEAD
элемент один за другим. Например, вот так:var temp = document.createElement('div'); temp.innerHTML = '<link rel="stylesheet" href="example.css" />' + '<script src="foobar.js"><\/script> '; var head = document.head; while (temp.firstChild) { head.appendChild(temp.firstChild); }
по сравнению с переписыванием всего
HEAD
содержимое черезinnerHTML
, это не повлияет на существующие дочерние элементыHEAD
элемент в любом случае.отметим, что скрипты вставленные таким образом, по-видимому, не выполняются автоматически, в то время как стили применяются успешно. Поэтому, если вам нужны скрипты для выполнения, вы должны загрузить JS-файлы с помощью Ajax а затем выполнить их содержимое с помощью
eval()
.
попробуйте javascript pure:
библиотека JS:
appendHtml = function(element, html) { var div = document.createElement('div'); div.innerHTML = html; while (div.children.length > 0) { element.appendChild(div.children[0]); } }
тип:
appendHtml(document.head, '<link rel="stylesheet" type="text/css" href="http://example.com/example.css"/>');
или jQuery:
$('head').append($('<link rel="stylesheet" type="text/css" />').attr('href', 'http://example.com/example.css'));
Я не знаю, почему я ненавижу использовать jquery. я дал голову идентификатором 'голова'.
<head id="head"> <meta charset="utf-8"> <title></title> </head> <script type="text/javascript"> var head = document.getElementById('head'); if (window.screen.width<800) { head.innerHTML = " <link rel='stylesheet' href='../css/gallerys.css?ver=1.2'>"; }else { head.innerHTML="<link rel='stylesheet' href='../css/gallerys.css?ver=1.3'>"; } </script>