NO_MODIFICATION_ALLOWED_ERR DOM例外7的Chrome错误

时间:2010-03-26 07:39:06

标签: javascript html css dom google-chrome

我有以下代码将样式插入DOM(有一个用于将样式注入DOM的用例,所以请不要问为什么或者说在.css文件中加载css)。

<script type="text/javascript">
window.onload = function()
{
    var bmstyle = document.createElement('style');
    bmstyle.setAttribute('type', 'text/css');
    var styleStr = "#test-div {background:#FFF;border:2px solid #315300;";
    bmstyle.innerHTML = styleStr;
    document.body.appendChild(bmstyle);
}

</script>

如果我在Firefox中运行,它运行正常。但是我在Google Chrome中遇到了这个错误:

Line bmstyle.innerHTML = styleStr;
Uncaught Error: NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7

有人有修复吗?感谢

6 个答案:

答案 0 :(得分:9)

答案 1 :(得分:3)

仅供将来参考的注释...我正在使用以下函数动态创建CSS样式。我发现使用textContent效果最好。

这会破坏Safari

el.innerHTML = css.join('\n'); 

这打破了FireFox

el.innerText = css.join('\n');

以下是我的最终代码,适用于两种浏览器。 IE未经测试......

/**
* Write out stylesheets to the page.
* 
* @param {array} css
*/
function print_css(css) {
    var headTag = document.getElementsByTagName('head')[0],
        el = document.createElement('style');

    el.type = 'text/css';
    el.textContent = css.join('\n');
    headTag.appendChild(el);
}

答案 2 :(得分:2)

我也是,我有这个问题,试试这个:

bmstyle.value = styleStr;

答案 3 :(得分:1)

可能因为将<style>元素放入体内是无效的,但说实话我会感到惊讶

答案 4 :(得分:1)

尝试使用:

<f:view xmlns:f="http://java.sun.com/jsf/core" contentType="text/html" />

答案 5 :(得分:1)

使用innerText / textContent。 或者使用样式创建文本节点,并将其添加到样式标记中。 这不是因为风格在体内,而且你可以随时将它添加到头部,这不能解决问题。