Element.appendChild () se déclenche dans IE

J'ai le javascript suivant:

css = document.createElement('style'); css.setAttribute('type', 'text/css'); css_data = document.createTextNode(''); css.appendChild(css_data); document.getElementsByTagName("head")[0].appendChild(css); 

Pour une raison quelconque, dans IE seulement, il étouffe sur "css.appendChild (css_data);" Donner l'erreur: "Appel inattendu à la méthode ou à l'accès aux propriétés"

Que se passe-t-il?

Essayez à la place:

 var css = document.createElement('style'); css.setAttribute('type', 'text/css'); var cssText = ''; if(css.styleSheet) { // IE does it this way css.styleSheet.cssText = cssText } else { // everyone else does it this way css.appendChild(document.createTextNode(cssText)); } document.getElementsByTagName("head")[0].appendChild(css); 

Ceci est particulier avec l'élément "style", IE n'autorise pas la méthode appendChild ().

No appendChild () autorisé avec HTMLStyleElement dans IE

Vérifiez-le

@crescentfresh

J'ai essayé votre suggestion, et le contenu du bloc de style n'a jamais été peuplé. J'ai essayé IE6 et IE7 … ça ne semble rien faire

Voici mon code modifié:

 function load_content() { var d = new Date(); css = document.createElement('style'); css.setAttribute('type', 'text/css'); if(css.styleSheet) { css.styleSheet.cssText = 'testing'} //Because IE is evil else { css_data = document.createTextNode(''); css.appendChild(css_data); } //And everyone else is cool document.getElementsByTagName("head")[0].appendChild(css); new Ajax.PeriodicalUpdater('content', '/%doc_path%?'+d.getTime(), { method: 'post', frequency: 5, onSuccess: function(transport) { new Ajax.Request('/%css_path%?'+d.getTime(), { method: 'get', onSuccess: function(transport) { if(css.styleSheet) { css.styleSheet.cssText = transport.responseTex} else { var new_css_data = document.createTextNode(transport.responseText); css.replaceChild(new_css_data, css_data); css_data = new_css_data; } } }); } }); } 

Des idées?