Спецификация говорит, что ничто не должно быть нарисовано.
Если первый аргумент не является элементом img, canvas или video, генерируется исключение TYPE_MISMATCH_ERR. Если изображение не содержит данных изображения, генерируется исключение INVALID_STATE_ERR. Если один из размеров исходного прямоугольника равен нулю, генерируется исключение INDEX_SIZE_ERR. Если изображение еще не полностью декодировано, то ничего не рисуется.
Я попробовал это просто ради этого. Вы можете посмотреть результаты здесь.
Я в основном использовал PHP для замедления загрузки изображения.
slowimage.php
<?php
sleep(3);
header('Content-type: image/png');
echo file_get_contents('stackoverflow-logo-300.png');
?>
index.html
<canvas id="canvas" width="512" height="512">
<script>
var img = new Image();
img.onload = function() {
alert("image loaded");
};
img.src = "slowimage.php";
var ctx = document.getElementById("canvas").getContext("2d");
ctx.drawImage(img, 0, 0);
</script>
Как было установлено, и, как вы можете видеть, ничего не нарисовано.