Для согласованного поведения вы должны использовать onload
.Если вы этого не сделаете, код для рисования на холсте может быть выполнен до загрузки изображения, и требуемое изображение не будет нарисовано.
Возможно, onload
s, которые будут рисоваться на других холстах, не будутвызван, потому что Image
s собирают мусор до того, как событие может сработать.
Попробуйте добавить
var images = [];
в начале кода и
images.push(img);
После строки img = new Image()
.
Если это не сработает, попробуйте сначала добавить эти изображения в дерево DOM-- img.setAttribute('style', 'display: none')
, чтобы вы их не видели и не мешали работе с документом.структура.