Другая причина этой ошибки - слишком большие размеры исходного изображения; они выходят за пределы фактических размеров изображения. Когда это происходит, вы увидите эту ошибку в IE, но не в Chrome или Firefox.
Скажем, у вас есть изображение 150x150:
var imageElement = ...;
Тогда, если вы попытаетесь нарисовать его, используя большие исходные размеры:
var sourceX = 0;
var sourceY = 0;
var sourceWidth = 200; // Too big!
var sourceHeight = 200; // Too big!
canvasContext.drawImage(imageElement,
sourceX, sourceY, sourceWidth, sourceHeight, // Too big! Will throw INDEX_SIZE_ERR
destX, destY, destWidth, destHeight);
Это вызовет INDEX_SIZE_ERR в IE. (Последний IE был IE11 на момент написания этой статьи.)
Исправление просто ограничивает исходные размеры:
var sourceWidth = Math.min(200, imageElement.naturalWidth);
var sourceHeight = Math.min(200, imageElement.naturalHeight);
Ответ malloc4k ссылался на это, однако он предположил, что это потому, что image.width было нулевым. Я добавил этот новый ответ, потому что нулевая ширина изображения не обязательно является причиной ошибки в IE.