Javascript 元素。appendChild()在IE中阻塞

Javascript 元素。appendChild()在IE中阻塞,javascript,internet-explorer,Javascript,Internet Explorer,我有以下javascript: 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

我有以下javascript:

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

对于“style”元素,这是特别的,即不允许在其上使用appendChild()方法。

不允许将appendChild()与HTMLStyleElement一起使用,即

我尝试了你的建议,但是样式块的内容永远不会被填充。在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;
                } 
              }
          });
    }
  });
}

有什么想法吗?

两件事:1)如何验证样式块没有获得内容?IE开发者工具栏什么的?2) 不是“测试”而是“尝试”body{font-size:45px;}(iow-try-legal-css)。我有一个bookmarklet,它会显示文档的内存源,而不是文件的源…不确定你对#2css.styleSheet.cssText='body{font-size:45px;}的意思;bookmarklet是否显示页面上其他标记内的css?是的…bookmarklet显示样式标记内的css。它还显示在其他浏览器的特定标记中。嗨,同样的事情是否适用于脚本元素?我遇到了一个类似的问题,但是当我想动态加载javascript代码时,使用了一个脚本元素。。。