Я пробовал это несколькими разными способами, но постоянно сталкиваюсь с той же ошибкой. Раньше я загружал изображение на холст, но, поскольку несколько дней назад я обновил 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
, я все равно не повезло, и получите ошибку. Есть мысли?
Когда вы делаете это:
window.onload = init();
функция init()
будет выполнена немедленно (что вызывает ошибку, потому что getContext()
вызывается слишком рано, то есть до загрузки DOM), и возвращаемое значение init()
будет сохранено в window.onload
.
Итак, вы действительно хотите сделать это:
window.onload = init;
Обратите внимание на отсутствующий ()
.
Просто поместите ваш JavaScript в конец страницы, он ... положит конец вашим проблемам ... я попробовал все, но это самое логичное и простое решение ... так как JS будет работать только после другой части (то есть верхняя страница) загружен .. надеюсь, что это поможет