Мне нужно вставить строку HTML в тег <head>
текущего DOM документа, одним способом: вы создаете элемент div, заполняете его innerHTML, копируете элемент за элементом в элемент <head>
. Но эти методы не работают в IE / Opera по причинам, указанным ниже, хотя в FF3 оба описанные ниже методы работают отлично, и браузер обрабатывает добавленные элементы STYLE / SCRIPT.
Есть ли другой способ вставить строку прямо в <head>
и обработать ли эти элементы?
(Почему они не работают в IE / Opera)
Метод 1 - Сбой , поскольку innerHTML не может анализировать / игнорировать элементы META, STYLE, SCRIPT в строке
insertHtml = function(parentElem,htmlStr){
var frag = document.createDocumentFragment();
var temp = document.createElement('div');
temp.innerHTML = htmlStr;
// at this point, temp.childNodes.length=0
while (temp.firstChild) {
frag.appendChild(temp.firstChild);
}
// use native DOM methods to insert the fragment
parentElem.insertBefore(frag, parentElem.childNodes[0]);
}
Метод 2 - Сбой , поскольку добавленные элементы STYLE / SCRIPT не обрабатываются браузером
document.getElementsByTagName("head")[0].innerHTML = htmlStr
// although this populates the <head> tag successfully