NO_MODIFICATION_ALLOWED_ERR DOM例外7的Chrome错误

HP.*_*HP. 11 html javascript 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>
Run Code Online (Sandbox Code Playgroud)

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

Line bmstyle.innerHTML = styleStr;
Uncaught Error: NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7
Run Code Online (Sandbox Code Playgroud)

有人有修复吗?谢谢

Ant*_*ony 9

我认为这是因为您正在使用innerHTML其他任何地方使用XML语法.尝试:

bmstyle.nodeValue = styleStr;
Run Code Online (Sandbox Code Playgroud)

建议2:

这也可能是因为您正在尝试设置尚未包含在HTML DOM中的元素的innerHTML.如果是这样的话,我的第一个建议应该仍然存在,或者你可以选择:

document.body.appendChild(bmstyle);
bmstyle.innerHTML = styleStr;
Run Code Online (Sandbox Code Playgroud)

我不确定你是否需要一条线来回收元素,或者bmstyle是否还会指向它.