首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >canvas getContext("2d")返回null

canvas getContext("2d")返回null
EN

Stack Overflow用户
提问于 2011-07-23 05:12:25
回答 4查看 66.4K关注 0票数 36

我已经尝试了几种不同的方法,但我总是遇到相同的错误。我之前已经加载了一个图像到canvas,但是自从我在几天前更新了Safari之后,我收到了错误。

我会发布我目前所拥有的内容,但我已经尝试过使用jQuery、html的onLoad属性等。

代码语言:javascript
复制
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()">了。但是,它只是偶尔显示,如果我尝试在$(document).ready()document.onload上运行init(),我仍然不走运,并收到错误。有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-23 05:28:35

执行此操作时:

代码语言:javascript
复制
window.onload = init();

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

所以你想要这样做:

代码语言:javascript
复制
window.onload = init;

请注意缺少的()

票数 34
EN

Stack Overflow用户

发布于 2012-11-16 05:39:05

对于在搜索返回null的getContext时访问此页面的其他人,如果您已经请求了不同类型的上下文,则可能会发生这种情况。

例如:

代码语言:javascript
复制
var canvas = ...;
var ctx2d = canvas.getContext('2d');
var ctx3d = canvas.getContext('webgl'); // will always be null

如果颠倒调用顺序,同样也是如此。

票数 111
EN

Stack Overflow用户

发布于 2014-04-16 01:13:56

只需将您的JavaScript放在页面的末尾,它将...结束你的问题。我试过所有的方法,但这是最合理和最简单的解决方案..因为JS只有在其他部分(即上面的页面)加载之后才会运行。希望这对你有所帮助

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6796194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档