我通过jQuery将X canvas元素动态添加到页面中,如下所示:
$(document).ready(function() {
for(i=0;i<4;i++) {
var can = $(document.createElement("canvas"))
.attr("id","table"+i)
.addClass("table")
.attr("width",640)
.attr("height",480)
.appendTo('#container');
}
//...
});.append()和.appendTo()都没有回调,因为它们应该是立即发生的。不幸的是,关于canvas元素的某些事情不会立即发生。
当我在其中一个画布元素上访问.getContext('2d')时,它将失败并显示"getContext is not a function“。这在FF 3.5和Chrome上都会发生。
如果我将任意事件处理程序分配给.click()等画布元素,并在该事件中使用.getContext(),它将完美地工作。
如何有效地确定画布已准备好进行操作?
发布于 2009-10-24 06:13:10
我不认为您可以在can变量上使用getContext()。
如果您正在这样做,请尝试can[0].getContext()。这实际上会得到element对象,而不是jQuery的。
发布于 2009-10-24 05:47:24
首先,我会看看这两个浏览器上是否都有bug报告。
同时,您可以使用setInterval,或者可能只是一个循环,来检查.getContext (不带括号)是否为真,并且只在它为真时才继续(有一些合理的限制,这样如果出现问题或者用户的浏览器中没有该特性,您就不会使用无限循环来停止浏览器)。
发布于 2009-10-24 05:48:06
您可以将函数附加到画布的DOMReady事件。
https://stackoverflow.com/questions/1616072
复制相似问题