This isn’t my code, I’m just troubleshooting it. Some code that has been working for over a year has now stopped working in Chrome (12.0.742.122), but works in the other “big” browsers (including fellow WebKit stablemate Safari (5.0.5)). By “not working anymore” I mean that although the script file does load, it doesn’t execute. The kind of behaviour you’d expect if loading a script into innerHTML or writing it into a div, but neither of which things are being done. The commented-out lines below were all failed attempts at getting it working, the first of those being the original code that had worked up until recently.
<div id="abc"></div>
<script type="text/javascript">
var d=document.getElementById("abc");
var s=document.createElement('SCRIPT');
if(s){s.src=script_path;}
//if(d)d.appendChild(s); //original line that still works in all other browsers
//if(d)d.parentNode.appendChild(s);
//if(d)d.parentNode.insertBefore(s,d);
//if(d)d.parentNode.insertBefore(s,d.nextSibling);
document.body.appendChild(s); //this works, script executes
</script>
What is wanted from this code above, is that the script is a child of the div. Presumably they want to be able to remove that child and have all script be removed at the same time (I’m not sure of their motivation).
I’ve discovered what the problem was, largely thanks to Martin Bieder’s back and forth and introducing me to jsfiddle.net with his working example.
The issue was actually the test page and what you’d think would be a fairly harmless error they made in creating it. The div and all of the code will be represented below simply as ######, as it’s not even relevant to the problem. It’s actually a HTML problem. Chrome 12 isn’t happy if you don’t match up your closing tags properly. I really can’t believe that it has an effect on the execution on script files, but it does. I’ve tried many many times in the last 10 minutes with the HTML tags right and wrong and unbelievably this really is the problem.
You see how the font and center closing tags are the wrong way around, and that’s enough to confuse Chrome sufficiently that it won’t execute any dynamic script being added within those tags. Bizarre. I can’t recreate this on jsfiddle, probably due to the nature of the site runs the html/js that you put onto it (using onload for example).