That is, in the middle of the load you can assign the SRC to another smaller image and the smaller image will be loaded and appear in your browser. However, the original SRC still continues downloading.
Similarly, deleting the IMG node will not prevent the SRC from continuing to download. No guesses please, look at the repro steps.
(1) Load this URL in Chrome in Windows: http://18.104.22.168/imgLoadTest/imgLoadTest.htm
(2) Open up the developer panel by pressing CTRL-SHIFT-J
(3) On the top row of icons in the Chrome developer panel click the Network icon to watch network activity.
(4) On the web page loaded in Step 1 click the Load Image button and watch the developer panel as a large (32meg) image starts loading.
(5) On the web page click the Try To Cancel button to load a different image.
(6) A small image loads, but watch the network in the developer panel and notice that the large image continues to download.
src attribute of the
img tag to the empty string will interrupt the current download, even on Chrome.
Nowadays most of browsers implemented that out-of-standard mechanism thought in the old answer to programmatically abort the connection. This is not achieved through a protocol request, but with a client-side in-memory operation. Keep in mind that is not a standard behaviour, but most of vendors courtesy. That is, it could not work on every browser.
I've prepared a jsfiddle showing this mechanism in action (keep an eye at the network panel of the inspector).
Your browser asks for that image with a specific HTTP GET request, as specified in HTTP protocol. Once it asks for it, the http server starts the transfer.
So, it is between the browser (as http client) and the http server.