`script.innerHTML = node.innerHTML;` creates element children if the content contains `<` followed by a letter. e.g.
    for (i=0; i<a; i++);
    var html = '<div id="blah">' + blah + '</div>';
Make placeContent() a private function in decorate().
This reflects the reality that it is only called by decorate().
Move the logger definition so it can be called by the DOM utils code, etc.
Also some comments.
$id could fail on browsers where DocumentFragment is used to emulate Document - IE 6-8
script textContent tests would fail if no textContent.