带有 NO_MODIFICATION_ALLOWED_ERR DOM 异常 7 的 Chrome 错误

Posted

技术标签:

【中文标题】带有 NO_MODIFICATION_ALLOWED_ERR DOM 异常 7 的 Chrome 错误【英文标题】:Chrome error with NO_MODIFICATION_ALLOWED_ERR DOM Exception 7 【发布时间】:2011-02-01 01:51:08 【问题描述】:

我有以下代码将样式插入 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

有人解决了吗?谢谢

【问题讨论】:

看起来我的问题在这里描述了code.google.com/p/chromium/issues/detail?id=3976#makechanges 所以我想知道“有没有办法解决??”谢谢 【参考方案1】:

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

bmstyle.value = styleStr;

【讨论】:

【参考方案2】:

尝试使用:

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

【讨论】:

【参考方案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);

【讨论】:

【参考方案4】:

使用innerText / textContent。 或者创建一个带有样式的文本节点,并将其添加到样式标签中。 不是因为样式在body里,加上你总是可以加到head里,这并不能解决问题。

【讨论】:

【参考方案5】:

可能是因为将&lt;style&gt;元素放在正文中是无效的,但老实说我会感到惊讶

【讨论】:

【参考方案6】:

我认为这是因为您使用的是innerHTML,而其他任何地方您都在使用 XML 语法。试试:

bmstyle.nodeValue = styleStr;

建议二:

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

document.body.appendChild(bmstyle);
bmstyle.innerHTML = styleStr;

我不确定您是否需要在中间添加一条线来回收元素,或者 bmstyle 是否仍会指向它。

【讨论】:

我应该提一下,由于本例中的 DOM 是 HTML DOM,所以没关系。但是当你没有将 DOM Element 变量显式设置为 HTML 时,Chrome 可能会很生气。 我使用了您的建议 2,但仍然有错误。我将建议 1 与 nodeValue 一起使用,它没有错误,但样式标签中没有任何内容(顺便说一句,我更正了在末尾添加 )。我应该插入标题吗?如何插入? 谢谢!很有帮助 当我使用它时,控制台出现:HierarchyRequestError,有什么想法吗?...浏览器是IE

以上是关于带有 NO_MODIFICATION_ALLOWED_ERR DOM 异常 7 的 Chrome 错误的主要内容,如果未能解决你的问题,请参考以下文章

带有和不带有聚合的 sql 查询

如何翻转正面带有标签而背面带有另一个标签的视图 - 参见图片

CakePHP 如何处理带有/不带有 'id' 字段的 HABTM 表?

带有滚动的 Div 和带有绝对位置的内容

带有 RecyclerView 的 DialogFragment 比带有 Recyclerview 的 Fragment 慢

访问控制允许带有和不带有 www 的来源