我有以下代码将样式插入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
有人有修复吗?感谢
答案 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。 或者使用样式创建文本节点,并将其添加到样式标记中。 这不是因为风格在体内,而且你可以随时将它添加到头部,这不能解决问题。