What is the best way to set up a local fallback image if the external image does not load or takes too long to load.
You can add an onerror handler:
<img
src="http://example.com/somejpg.jpg"
onerror='this.onerror = null; this.src="./oops.gif"'
/>
Note: Setting onerror to null in the handler, so that the webpage doesn't crash if oops.gif can't be loaded for some reason.
Try to make use of the Image.complete property.
var img = new Image(w,h)
img.src = "http://...";
Now check periodically if img.complete is true and call some fallback mechanism shuold it still be false after n seconds.