Element.appendChild()扼流圈IE

问题描述:

我有以下的javascript:Element.appendChild()扼流圈IE

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

由于某些原因,在IE只,它扼流圈上的 “css.appendChild(css_data);” 给出错误:“意外调用方法或财产访问”

发生了什么事?

尝试代替:

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); 
+1

你好,同样的事情适用于脚本元素?我有一个类似的问题,但随后与脚本元素,当我想要动态加载JavaScript代码... – 2013-07-15 08:07:41

这是特别是与“风格”元素IE不允许在其上的appendChild()方法。

没有appendChild()允许与HTMLStyleElement在I.E.

check it out

@crescentfresh

我想你的建议,而且款式块的内容根本不会被填充。在IE6和IE7尝试......它只是似乎没有做任何事情

这里是我修改后的代码:

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; 
       } 
       } 
      }); 
    } 
    }); 
} 

任何想法?

+0

两件事情:1)你如何验证样式块没有得到内容? IE开发工具栏或什么? 2)而不是'测试'尝试'身体{font-size:45px; }'(iow尝试合法的CSS)。 – 2009-01-13 02:58:59