I found this buried in some MSDN documentation:
Note that the documentation mistakenly says this works for elements too; the error will be fixed in the Workshop documentation for the final release of Internet Explorer 5 in March.
The next thing I thought of that could help is the onreadystatechange event:
<script src="http://www.google.com/NOTFOUND.js" onreadystatechange="alert(this.readyState)">
This event fires twice for me, once with “loading” and again with “loaded”, whether the script is valid or not. Other documentation I’ve found says that sometimes it fires a complete event, and it’s not really clear when it’s supposed to fire. So it looks like that won’t work.
So I think you’re left with the hacky solution of checking that a variable which the script is supposed to declare really exists. In HTML:
<script src="http://yourdomain.com/declare_foo.js"></script>
<script>if (typeof foo == "undefined") {alert ('error loading script');}</script>
And then of course in declare_foo.js, you’d have
var foo = 'Script loaded successfully';