canvas getContext («2d») возвращает значение null

Я пробовал это несколькими разными способами, но постоянно сталкиваюсь с той же ошибкой. Раньше я загружал изображение на холст, но, поскольку несколько дней назад я обновил Safari, у меня появляются ошибки.

Я опубликую то, что у меня есть на данный момент, но я пробовал делать это с помощью jQuery, свойство onLoad в html и т. д.

var cvs, ctx, img;
function init() {
   cvs = document.getElementById("profilecanvas");
   ctx = cvs.getContext("2d"); /* Error in getContext("2d") */
   img = document.getElementById("profileImg");
   drawImg();
}

function drawImg() {
   ctx.drawImage(img, 0, 0);
}

window.onload = init();

Идентификаторы верны и соответствуют соответствующим тегам canvas и img. Однако я продолжаю получать TypeError: 'null' не является объектом (оценка 'cvs.getContext') , и, похоже, дальше это не продвигается. Я уверен, что это какая-то ошибка ID10T, но я надеюсь, что кто-нибудь может дать мне ключ к пониманию того, что ее вызывает? Спасибо.

Редактировать: Хорошо, похоже, теперь это работает с использованием . Однако он отображается только изредка, и если я попытаюсь запустить init () из $ (document) .ready () или document.onload , я все равно не повезло, и получите ошибку. Есть мысли?

28
задан Drew Noakes 15 November 2012 в 10:39
поделиться

2 ответа

Когда вы делаете это:

window.onload = init();

функция init() будет выполнена немедленно (что вызывает ошибку, потому что getContext() вызывается слишком рано, то есть до загрузки DOM), и возвращаемое значение init() будет сохранено в window.onload.

Итак, вы действительно хотите сделать это:

window.onload = init;

Обратите внимание на отсутствующий ().

31
ответ дан 20 November 2019 в 01:50
поделиться

Просто поместите ваш JavaScript в конец страницы, он ... положит конец вашим проблемам ... я попробовал все, но это самое логичное и простое решение ... так как JS будет работать только после другой части (то есть верхняя страница) загружен .. надеюсь, что это поможет

7
ответ дан 20 November 2019 в 01:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: