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);
答
这是特别是与“风格”元素IE不允许在其上的appendChild()方法。
答
我想你的建议,而且款式块的内容根本不会被填充。在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
你好,同样的事情适用于脚本元素?我有一个类似的问题,但随后与脚本元素,当我想要动态加载JavaScript代码... – 2013-07-15 08:07:41