我尝试了几种不同的方法,但是我一直陷于同一错误。我之前已将图像加载到 Canvas 上,但是由于几天前我更新了Safari,因此出现错误。

我将发布当前的内容,但我尝试使用jQuery,html的onLoad属性等来实现。

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

这些ID是正确的,并且对应于适当的canvas和img标签。但是,我一直在获取TypeError: 'null' is not an object (evaluating 'cvs.getContext'),而且似乎没有任何进一步的发展。我确定这是一些ID10T错误,但我希望有人能给我提供有关这是什么原因的线索?谢谢你。

编辑:
好的,所以现在似乎可以使用<body onload="init()">了。但是,它只是偶尔显示,如果我尝试从init()$(document).ready()上运行document.onload,我仍然没有运气,并收到错误消息。有什么想法吗?

最佳答案

执行此操作时:

window.onload = init();

该函数init()将立即执行(这是导致错误的原因,因为getContext()调用得太早,即在加载DOM之前),并且init()的返回值将存储到window.onload中。

因此,您实际上想这样做:
window.onload = init;

注意缺少的()

关于javascript - canvas getContext (“2d”)返回null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6796194/

10-11 05:39