canvas getContext ("2d") devuelve nulo

He intentado esto de diferentes maneras, pero sigo atascado con el mismo error. He cargado una imagen en el lienzo antes, pero desde que actualicé Safari hace unos días, recibo errores.

Publicaré lo que tengo en este momento, pero he intentado hacerlo con jQuery, la propiedad onLoad de html, etc.

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();

Los ID son correctos y corresponden al lienzo apropiado y a las etiquetas img. Sin embargo, sigo recibiendoTypeError: 'null' is not an object (evaluating 'cvs.getContext') y parece que no va más allá. Estoy seguro de que es un error ID10T, pero espero que alguien pueda darme una pista de lo que está causando esto. Gracias

Edit: Ok, parece que esto funciona con<body onload="init()"> ahora. Sin embargo, solo se muestra ocasionalmente, y si intento ejecutarinit() fuera de$(document).ready() odocument.onload Todavía no tengo suerte y recibo el error. ¿Alguna idea

Respuestas a la pregunta(4)

Su respuesta a la pregunta