我已经尝试了几种不同的方法,但我总是遇到相同的错误。我之前已经加载了一个图像到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()">
了。但是,它只是偶尔显示,如果我尝试在$(document).ready()
或document.onload
上运行init()
,我仍然不走运,并收到错误。有什么想法吗?
发布于 2011-07-23 05:28:35
执行此操作时:
window.onload = init();
函数init()
将被立即执行(这是导致错误的原因,因为getContext()
被调用得太早,即在加载DOM之前),并且init()
的返回值将被存储到window.onload
。
所以你想要这样做:
window.onload = init;
请注意缺少的()
。
发布于 2012-11-16 05:39:05
对于在搜索返回null的getContext
时访问此页面的其他人,如果您已经请求了不同类型的上下文,则可能会发生这种情况。
例如:
var canvas = ...;
var ctx2d = canvas.getContext('2d');
var ctx3d = canvas.getContext('webgl'); // will always be null
如果颠倒调用顺序,同样也是如此。
发布于 2014-04-16 01:13:56
只需将您的JavaScript放在页面的末尾,它将...结束你的问题。我试过所有的方法,但这是最合理和最简单的解决方案..因为JS只有在其他部分(即上面的页面)加载之后才会运行。希望这对你有所帮助
https://stackoverflow.com/questions/6796194
复制相似问题