我尝试了几种不同的方法,但是我一直陷于同一错误。我之前已将图像加载到 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/