J'ai besoin d'insérer une chaîne HTML dans la balise <head>
du document DOM actuel, d'une façon: vous créez un élément div, remplissez son innerHTML, copiez sur l'élément par -Incluez dans votre <head>
élément. Mais ces méthodes ne fonctionnent pas dans IE/Opera pour les raisons données ci-dessous, bien que dans FF3 les deux méthodes fonctionnent parfaitement, et le navigateur traite les éléments STYLE/SCRIPT ajoutés.Insérer dynamiquement une chaîne HTML dans le HEAD d'un document
Existe-t-il un autre moyen d'insérer directement une chaîne dans <head>
et de traiter ces éléments?
(Pourquoi ils échouent dans IE/Opera)
Méthode 1 - ne réussit pas parce innerHTML ne peut pas analyser/ne tient pas compte META, STYLE, éléments SCRIPT dans la chaîne
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]);
}
Méthode 2 - Echoue car les éléments STYLE/SCRIPT ajoutés ne sont pas traités par le navigateur
document.getElementsByTagName("head")[0].innerHTML = htmlStr
// although this populates the <head> tag successfully
Qu'en est-il si vous utilisez votre première fonction, mais le changement « div » à la « tête »? – Greg
Puis IE/Opera se bloque juste après l'affectation innerHTML. Apparemment, vous ne pouvez pas createElement ('head') !! –