Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Chrome error with NO_MODIFICATION_ALLOWED_ERR DOM Exception 7

I have below code to insert a style into DOM (there is a use case for injecting style into DOM so please don't ask why or say to load the css in .css file).

<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>

If I run in Firefox, it works fine. But I got this error in Google Chrome:

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

Does anyone have a fix? Thanks

like image 703
HP. Avatar asked Mar 26 '10 07:03

HP.


1 Answers

I think it's because you are using innerHTML when everywhere else you are using XML syntax. Try:

bmstyle.nodeValue = styleStr;

Suggestion 2:

It might also be because you are trying to set the innerHTML of a an element not yet in the HTML DOM. If that's the case, my first suggestion should still hold up, or you can go with:

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

I'm not sure if you'd need a line inbetween to reclaim the element or if the bmstyle would still point to it.

like image 159
Anthony Avatar answered Oct 30 '22 13:10

Anthony